diff --git modules/system/system.module modules/system/system.module
index aeac11e..ee6c32a 100644
--- modules/system/system.module
+++ modules/system/system.module
@@ -2484,6 +2484,17 @@ function _system_rebuild_theme_data() {
     $themes[$key]->filename = $theme->uri;
     $themes[$key]->info = drupal_parse_info_file($theme->uri) + $defaults;
 
+    // Verify the required .info file fields are present. The 'name' field
+    // needs to be non-empty, since it is the title of many links in the
+    // administration pages. The 'description' should be set, but is allowed
+    // to be empty. We omit checking for 'core' here, as it is validated
+    // elsewhere and old 6.x themes did not include the field.
+    if (empty($theme->info['name']) || !isset($theme->info['description'])) {
+      watchdog('theme', 'The .info file for theme %key is missing a <a href="@url">required field</a>.', array('%key' => $key, '@url' => 'http://drupal.org/node/542202'));
+      unset($themes[$key]);
+      continue;
+    }
+
     // Invoke hook_system_info_alter() to give installed modules a chance to
     // modify the data in the .info files if necessary.
     $type = 'theme';
