Index: wp-admin/includes/plugin-install.php
===================================================================
--- wp-admin/includes/plugin-install.php	(revision 21933)
+++ 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" id="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 21933)
+++ wp-admin/includes/theme-install.php	(working copy)
@@ -134,11 +134,11 @@
 
 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') ?>
-	<input type="file" name="themezip" />
+<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" id="upload-form" action="<?php echo self_admin_url('update.php?action=upload-theme'); ?>">
+	<?php wp_nonce_field( 'theme-upload'); ?>
+	<input type="file" id="themezip" name="themezip" />
 	<?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
 </form>
 	<?php
Index: wp-admin/js/custom-background.js
===================================================================
--- wp-admin/js/custom-background.js	(revision 21933)
+++ wp-admin/js/custom-background.js	(working copy)
@@ -61,6 +61,13 @@
 					$(this).fadeOut(2);
 			});
 		});
+
+		toggleUploadButton = function() {
+			$('#upload-form #submit').prop( 'disabled', '' === $('#upload').val() );
+		};
+
+		toggleUploadButton();
+		$('#upload').change( toggleUploadButton );
 	});
 
-})(jQuery);
\ No newline at end of file
+})(jQuery);
Index: wp-admin/js/custom-header.js
===================================================================
--- wp-admin/js/custom-header.js	(revision 0)
+++ wp-admin/js/custom-header.js	(working copy)
@@ -0,0 +1,12 @@
+(function($) {
+
+	$(document).ready( function() {
+		toggleUploadButton = function() {
+			$('#upload-form #submit').prop( 'disabled', '' === $('#upload').val() );
+		};
+
+		toggleUploadButton();
+		$('#upload').change( toggleUploadButton );
+	});
+
+})(jQuery);
Index: wp-admin/js/plugin-install.js
===================================================================
--- wp-admin/js/plugin-install.js	(revision 21933)
+++ wp-admin/js/plugin-install.js	(working copy)
@@ -50,4 +50,11 @@
 	$('a.install-now').click( function() {
 		return confirm( plugininstallL10n.ays );
 	});
+
+	toggleUploadButton = function() {
+		$('#upload-form #install-plugin-submit').prop( 'disabled', '' === $('#pluginzip').val() );
+	};
+
+	toggleUploadButton(); 
+	$('#pluginzip').change( toggleUploadButton );
 });
Index: wp-admin/js/theme.js
===================================================================
--- wp-admin/js/theme.js	(revision 21933)
+++ wp-admin/js/theme.js	(working copy)
@@ -112,6 +112,13 @@
 jQuery( document ).ready( function($) {
 	theme_viewer = new ThemeViewer();
 	theme_viewer.init();
+
+	toggleUploadButton = function() {
+		$('#upload-form #install-theme-submit').prop( 'disabled', '' === $('#themezip').val() );
+	};
+
+	toggleUploadButton(); 
+	$('#themezip').change( toggleUploadButton );
 });
 
 
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 21933)
+++ wp-includes/script-loader.php	(working copy)
@@ -440,8 +440,9 @@
 			'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
 		) );
 
-		$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), false, 1 );
-		$scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
+		$scripts->add( 'custom-header', "/wp-admin/js/custom-header$suffix.js", array( 'jquery' ), false, 1 );
+		$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array( 'farbtastic' ), false, 1 );
+		$scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array( 'jquery' ), false, 1 );
 	}
 }
 
