Index: wp-admin/custom-background.php
===================================================================
--- wp-admin/custom-background.php	(revision 22136)
+++ wp-admin/custom-background.php	(working copy)
@@ -254,7 +254,7 @@
 <?php endif; ?>
 <tr valign="top">
 <th scope="row"><?php _e('Select Image'); ?></th>
-<td><form enctype="multipart/form-data" id="upload-form" method="post" action="">
+<td><form enctype="multipart/form-data" id="upload-form" class="wp-upload-form" method="post" action="">
 	<p>
 		<label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
 		<input type="file" id="upload" name="import" />
Index: wp-admin/custom-header.php
===================================================================
--- wp-admin/custom-header.php	(revision 22136)
+++ wp-admin/custom-header.php	(working copy)
@@ -525,7 +525,7 @@
 			printf( __( 'Suggested height is <strong>%1$d pixels</strong>.' ) . ' ', get_theme_support( 'custom-header', 'height' ) );
 	}
 	?></p>
-	<form enctype="multipart/form-data" id="upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>">
+	<form enctype="multipart/form-data" id="upload-form" class="wp-upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>">
 	<p>
 		<label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
 		<input type="file" id="upload" name="import" />
Index: wp-admin/includes/plugin-install.php
===================================================================
--- wp-admin/includes/plugin-install.php	(revision 22136)
+++ wp-admin/includes/plugin-install.php	(working copy)
@@ -142,13 +142,13 @@
  */
 function install_plugins_upload( $page = 1 ) {
 ?>
-	<h4><?php _e('Install a plugin in .zip format') ?></h4>
-	<p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.') ?></p>
-	<form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-plugin') ?>">
-		<?php wp_nonce_field( 'plugin-upload') ?>
+	<h4><?php _e('Install a plugin in .zip format'); ?></h4>
+	<p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
+	<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
+		<?php wp_nonce_field( 'plugin-upload'); ?>
 		<label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
 		<input type="file" id="pluginzip" name="pluginzip" />
-		<input type="submit" class="button" value="<?php esc_attr_e('Install Now') ?>" />
+		<?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
 	</form>
 <?php
 }
Index: wp-admin/includes/theme-install.php
===================================================================
--- wp-admin/includes/theme-install.php	(revision 22136)
+++ wp-admin/includes/theme-install.php	(working copy)
@@ -134,10 +134,10 @@
 
 function install_themes_upload($page = 1) {
 ?>
-<h4><?php _e('Install a theme in .zip format') ?></h4>
-<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.') ?></p>
-<form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-theme') ?>">
-	<?php wp_nonce_field( 'theme-upload') ?>
+<h4><?php _e('Install a theme in .zip format'); ?></h4>
+<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.'); ?></p>
+<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-theme'); ?>">
+	<?php wp_nonce_field( 'theme-upload'); ?>
 	<input type="file" name="themezip" />
 	<?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
 </form>
Index: wp-admin/js/common.js
===================================================================
--- wp-admin/js/common.js	(revision 22136)
+++ wp-admin/js/common.js	(working copy)
@@ -161,7 +161,9 @@
 
 $(document).ready( function() {
 	var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'),
-		pageInput = $('input.current-page'), currentPage = pageInput.val();
+		pageInput = $('input.current-page'), currentPage = pageInput.val(),
+		uploadButton = $('.wp-upload-form input[type="submit"]'),
+		fileInput = uploadButton.closest('form').find('input[type="file"]');
 
 	// when the menu is folded, make the fly-out submenu header clickable
 	menu.on('click.wp-submenu-head', '.wp-submenu-head', function(e){
@@ -369,6 +371,12 @@
 	$(document).on('click.wp-accessibility-blur', 'a', function() {
 		$(this).blur();
 	});
+
+	toggleUploadButton = function() {
+		uploadButton.prop( 'disabled', '' === fileInput.val() );
+	};
+	toggleUploadButton();
+	fileInput.change( toggleUploadButton );
 });
 
 // internal use
