diff --git modules/image/image.admin.inc modules/image/image.admin.inc
index d72fdf4..2e4c610 100644
--- modules/image/image.admin.inc
+++ modules/image/image.admin.inc
@@ -773,8 +773,8 @@ function theme_image_style_preview($variables) {
 
   // Set up preview file information.
   $preview_file = image_style_path($style['name'], $original_path);
-  if (!file_exists($preview_file)) {
-    image_style_create_derivative($style, $original_path, $preview_file);
+  if (!(file_exists($preview_file) || image_style_create_derivative($style, $original_path, $preview_file))) {
+    return '';
   }
   $preview_image = image_get_info($preview_file);
   if ($preview_image['width'] > $preview_image['height']) {
diff --git modules/image/image.install modules/image/image.install
index fbd20de..8bbc2ae 100644
--- modules/image/image.install
+++ modules/image/image.install
@@ -276,6 +276,23 @@ function image_requirements($phase) {
       );
     }
     $requirements['image_gd']['title'] = t('GD library rotate and desaturate effects');
+    $styles_base = file_default_scheme() . '://styles/';
+    $style_names = array_keys(image_styles());
+    $severity = REQUIREMENT_OK;
+    $description = array();
+    foreach ($style_names as $style_name) {
+      $style_dir = drupal_dirname($styles_base . $style_name . '/test.png');
+      if (!file_prepare_directory($style_dir, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS)) {
+        $description[] = t('Directory %dir is not writable.', array('%dir' => drupal_realpath($style_dir)));
+        $severity = REQUIREMENT_ERROR;
+      }
+    }
+    $requirements['image styles'] = array(
+      'title' => t('All image styles directories writable'),
+      'value' => t( $severity == REQUIREMENT_OK ? 'Yes' : 'No' ),
+      'severity' => $severity,
+      'description' => implode('<br />',$description),
+    );
   }
 
   return $requirements;
