Index: wp-includes/nav-menu-template.php
===================================================================
--- wp-includes/nav-menu-template.php	(revision 15277)
+++ wp-includes/nav-menu-template.php	(working copy)
@@ -91,6 +91,13 @@
 		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
 	}
 
+	function display_element( $menu_item, &$desc_items, $max_depth, $depth = 0, $wp_nav_menu_args = array(), &$output ) {
+		if ( empty( $menu_item ) || ! isset( $menu_item->post_status ) || 'publish' != $menu_item->post_status && empty( $wp_nav_menu_args['_display_unpublished'] ) )
+			return;
+
+		return parent::display_element( $menu_item, $desc_items, $max_depth, $depth, $wp_nav_menu_args, $output );
+	}
+
 	/**
 	 * @see Walker::end_el()
 	 * @since 3.0.0
Index: wp-includes/nav-menu.php
===================================================================
--- wp-includes/nav-menu.php	(revision 15277)
+++ wp-includes/nav-menu.php	(working copy)
@@ -305,10 +305,18 @@
 		$original_title = '';
 		if ( 'taxonomy' == $args['menu-item-type'] ) {
 			$original_parent = get_term_field( 'parent', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
+			if ( is_wp_error( $original_parent ) )
+				return $original_parent;
+
 			$original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
+			if ( is_wp_error( $original_title ) )
+				return $original_title;
+
 		} elseif ( 'post_type' == $args['menu-item-type'] ) {
 
 			$original_object = get_post( $args['menu-item-object-id'] );
+			if ( empty( $original_object->post_type ) || ! post_type_exists( $original_object->post_type ) ) 
+				return new WP_Error('invalid_post_type', __( 'Invalid post type.' ) );
 			$original_parent = (int) $original_object->post_parent;
 			$original_title = $original_object->post_title;
 		}
@@ -543,21 +551,33 @@
 
 			if ( 'post_type' == $menu_item->type ) {
 				$object = get_post_type_object( $menu_item->object );
-				$menu_item->type_label = $object->labels->singular_name;
+				$menu_item->type_label = empty( $object ) ? '' : $object->labels->singular_name;
 				$menu_item->url = get_permalink( $menu_item->object_id );
-
+				
 				$original_object = get_post( $menu_item->object_id );
 				$original_title = $original_object->post_title;
 				$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
+				
+				if ( ! post_type_exists( $menu_item->object ) ) {
+					$menu_item->title = __( 'Invalid post type.' );
+					$menu_item->url = '';
+					$menu_item->post_status = 'draft';
+				}
 
+
 			} elseif ( 'taxonomy' == $menu_item->type ) {
 				$object = get_taxonomy( $menu_item->object );
-				$menu_item->type_label = $object->labels->singular_name;
+				$menu_item->type_label = empty( $object ) ? '' : $object->labels->singular_name;
 				$term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
-				$menu_item->url = !is_wp_error( $term_url ) ? $term_url : '';
+				$menu_item->url = ! is_wp_error( $term_url ) ? $term_url : '';
 
 				$original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
 				$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
+				if ( is_wp_error( $original_title ) ) {
+					$menu_item->title = $original_title->get_error_message();
+					$menu_item->url = '';
+					$menu_item->post_status = 'draft';
+				}
 
 			} else {
 				$menu_item->type_label = __('Custom');
Index: wp-admin/includes/nav-menu.php
===================================================================
--- wp-admin/includes/nav-menu.php	(revision 15277)
+++ wp-admin/includes/nav-menu.php	(working copy)
@@ -8,7 +8,20 @@
  * @uses Walker_Nav_Menu
  */
 class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  {
+	
 	/**
+	 * Generate the markup for an individual menu item to edit.
+	 *
+	 * @see Walker_Nav_Menu::display_element()
+	 * @since 3.1
+	 */
+	function display_element( $menu_item, &$desc_items, $max_depth, $depth = 0, $wp_nav_menu_args = array(), &$output ) {
+		$wp_nav_menu_args['_display_unpublished'] = true;
+
+		return parent::display_element( $menu_item, $desc_items, $max_depth, $depth, $wp_nav_menu_args, $output );
+	}
+
+	/**
 	 * @see Walker_Nav_Menu::start_lvl()
 	 * @since 3.0.0
 	 *
@@ -57,6 +70,8 @@
 		$original_title = '';
 		if ( 'taxonomy' == $item->type ) {
 			$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
+			if ( is_wp_error( $original_title ) )
+				$original_title = $original_title->get_error_message();
 		} elseif ( 'post_type' == $item->type ) {
 			$original_object = get_post( $item->object_id );
 			$original_title = $original_object->post_title;
