Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 17295)
+++ wp-includes/default-filters.php	(working copy)
@@ -186,6 +186,7 @@
 add_filter( 'pings_open',           '_close_comments_for_old_post', 10, 2 );
 add_filter( 'editable_slug',        'urldecode'                           );
 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'    );
+add_filter( 'wp_handle_upload_prefilter', 'wp_fix_original_filename'      );
 
 // Atom SSL support
 add_filter( 'atom_service_url','atom_service_url_filter' );
Index: wp-admin/includes/file.php
===================================================================
--- wp-admin/includes/file.php	(revision 17295)
+++ wp-admin/includes/file.php	(working copy)
@@ -1079,4 +1079,16 @@
 	return false;
 }
 
+function wp_fix_original_filename( $file ) {
+	if ( !isset( $_POST['original_file_name'] ) )
+		return $file;
+
+	$original_name = basename( str_replace( '\\', '/', stripslashes( $_POST['original_file_name'] ) ) );
+
+	if ( str_replace( '"', '%22', $original_name ) == $file['name'] )
+		$file['name'] = $original_name;
+
+	return $file;
+}
+
 ?>
Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 17295)
+++ wp-admin/includes/media.php	(working copy)
@@ -1530,6 +1530,11 @@
 		};
 		swfu = new SWFUpload(settings);
 };
+jQuery( function($) {
+	$( '#file-form' ).submit( function() {
+		$( '#original-file-name' ).val( $( '#async-upload' ).val() );
+	} );
+} );
 //]]>
 </script>
 
@@ -1552,6 +1557,7 @@
 	<p id="async-upload-wrap">
 		<label class="screen-reader-text" for="async-upload"><?php _e('Upload'); ?></label>
 		<input type="file" name="async-upload" id="async-upload" />
+		<input type="hidden" name="original_file_name" id="original-file-name" />
 		<?php submit_button( __( 'Upload' ), 'button', 'html-upload', false ); ?>
 		<a href="#" onclick="try{top.tb_remove();}catch(e){}; return false;"><?php _e('Cancel'); ?></a>
 	</p>
