If you’re ok with editing core files (I’m not sure if there’s a way to do this without editing the core – if there is, I’d love to hear about it!), just open up wp-admin/menu.php, and look for this code block:
$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'wp-menu-open menu-top', 'menu-posts', 'div' );
$submenu['edit.php'][5] = array( __('Edit'), 'edit_posts', 'edit.php' );
$submenu['edit.php'][10] = array( _c('Add New|post'), 'edit_posts', 'post-new.php' );
$submenu['edit.php'][15] = array( __('Tags'), 'manage_categories', 'edit-tags.php' );
$submenu['edit.php'][20] = array( __('Categories'), 'manage_categories', 'categories.php' );
Comment that whole block out, so it looks like this:
/*
$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'wp-menu-open menu-top', 'menu-posts', 'div' );
$submenu['edit.php'][5] = array( __('Edit'), 'edit_posts', 'edit.php' );
$submenu['edit.php'][10] = array( _c('Add New|post'), 'edit_posts', 'post-new.php' );
$submenu['edit.php'][15] = array( __('Tags'), 'manage_categories', 'edit-tags.php' );
$submenu['edit.php'][20] = array( __('Categories'), 'manage_categories', 'categories.php' );
*/
and the entire posts menu will dissapear.