diff --git a/contrib/views_slideshow_cycle/js/views_slideshow_cycle.js b/contrib/views_slideshow_cycle/js/views_slideshow_cycle.js
index b41d140..7baef32 100644
--- a/contrib/views_slideshow_cycle/js/views_slideshow_cycle.js
+++ b/contrib/views_slideshow_cycle/js/views_slideshow_cycle.js
@@ -15,6 +15,7 @@
       var settings = Drupal.settings.viewsSlideshowCycle[fullId];
       settings.targetId = '#' + $(fullId + " :first").attr('id');
       settings.slideshowId = settings.targetId.replace('#views_slideshow_cycle_teaser_section_', '');
+      settings.loaded = false;
 
       settings.opts = {
         speed:settings.speed,
@@ -288,6 +289,10 @@
             $imageElement.attr('src', '');
             $imageElement.attr('src', imgSrc);
           });
+
+          // We need to set a timeout so that the slideshow doesn't wait
+          // indefinitely for all images to load.
+          setTimeout("Drupal.viewsSlideshowCycle.load('" + fullId + "')", settings.wait_for_image_load_timeout);
         }
         else {
           Drupal.viewsSlideshowCycle.load(fullId);
@@ -311,38 +316,41 @@
 
   // Start the slideshow.
   Drupal.viewsSlideshowCycle.load = function (fullId) {
-    var settings = Drupal.settings.viewsSlideshowCycle[fullId];
-    $(settings.targetId).cycle(settings.opts);
-
-    // Start Paused
-    if (settings.start_paused) {
-      Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true });
-    }
-
-    // Pause if hidden.
-    if (settings.pause_when_hidden) {
-      var checkPause = function(settings) {
-        // If the slideshow is visible and it is paused then resume.
-        // otherwise if the slideshow is not visible and it is not paused then
-        // pause it.
-        var visible = viewsSlideshowCycleIsVisible(settings.targetId, settings.pause_when_hidden_type, settings.amount_allowed_visible);
-        if (visible) {
-          Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": settings.slideshowId });
-        }
-        else {
-          Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId });
+    // Make sure the slideshow isn't already loaded.
+    if (!settings.loaded) {
+      var settings = Drupal.settings.viewsSlideshowCycle[fullId];
+      $(settings.targetId).cycle(settings.opts);
+  
+      // Start Paused
+      if (settings.start_paused) {
+        Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true });
+      }
+  
+      // Pause if hidden.
+      if (settings.pause_when_hidden) {
+        var checkPause = function(settings) {
+          // If the slideshow is visible and it is paused then resume.
+          // otherwise if the slideshow is not visible and it is not paused then
+          // pause it.
+          var visible = viewsSlideshowCycleIsVisible(settings.targetId, settings.pause_when_hidden_type, settings.amount_allowed_visible);
+          if (visible) {
+            Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": settings.slideshowId });
+          }
+          else {
+            Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId });
+          }
         }
+  
+        // Check when scrolled.
+        $(window).scroll(function() {
+         checkPause(settings);
+        });
+  
+        // Check when the window is resized.
+        $(window).resize(function() {
+          checkPause(settings);
+        });
       }
-
-      // Check when scrolled.
-      $(window).scroll(function() {
-       checkPause(settings);
-      });
-
-      // Check when the window is resized.
-      $(window).resize(function() {
-        checkPause(settings);
-      });
     }
   };
 
diff --git a/contrib/views_slideshow_cycle/views_slideshow_cycle.views_slideshow.inc b/contrib/views_slideshow_cycle/views_slideshow_cycle.views_slideshow.inc
index 74ed8a3..01b7d8c 100644
--- a/contrib/views_slideshow_cycle/views_slideshow_cycle.views_slideshow.inc
+++ b/contrib/views_slideshow_cycle/views_slideshow_cycle.views_slideshow.inc
@@ -56,6 +56,7 @@ function views_slideshow_cycle_views_slideshow_option_definition() {
       'fixed_height' => array('default' => 1),
       'items_per_slide' => array('default' => 1),
       'wait_for_image_load' => array('default' => 1),
+      'wait_for_image_load_timeout' => array('default' => 3000),
 
       // Internet Explorer Tweaks
       'cleartype' => array('default' => 'true'),
@@ -286,6 +287,26 @@ function views_slideshow_cycle_views_slideshow_slideshow_type_form(&$form, &$for
     '#process' => array('views_process_dependency'),
     '#dependency' => array('edit-style-options-views-slideshow-cycle-action-advanced' => array(1)),
   );
+  $form['views_slideshow_cycle']['wait_for_image_load'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Wait for all the slide images to load'),
+    '#default_value' => $view->options['views_slideshow_cycle']['wait_for_image_load'],
+    '#description' => t('If selected the slideshow will not start unless all the slide images are loaded.  This will fix some issues on IE7/IE8/Chrome/Opera.'),
+    '#process' => array('views_process_dependency'),
+    '#dependency' => array('edit-style-options-views-slideshow-cycle-action-advanced' => array(1)),
+  );
+  $form['views_slideshow_cycle']['wait_for_image_load_timeout'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Timeout'),
+    '#default_value' => $view->options['views_slideshow_cycle']['wait_for_image_load_timeout'],
+    '#description' => t('How long should it wait until it starts the slideshow anyway. Time is in milliseconds.'),
+    '#process' => array('views_process_dependency'),
+    '#dependency_count' => 2,
+    '#dependency' => array(
+      'edit-style-options-views-slideshow-cycle-action-advanced' => array(1),
+      'edit-style-options-views-slideshow-cycle-wait-for-image-load' => array(1),
+    ),
+  );
 
   // Internet Explorer Tweaks
   $form['views_slideshow_cycle']['ie_tweaks'] = array(
@@ -311,17 +332,6 @@ function views_slideshow_cycle_views_slideshow_slideshow_type_form(&$form, &$for
   $form['views_slideshow_cycle']['advanced_options_header'] = array(
     '#value' => '<h2>' . t('jQuery Cycle Custom Options') . '</h2>',
   );
-  $form['views_slideshow_cycle']['wait_for_image_load'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Wait for all the slide images to load'),
-    '#default_value' => $view->options['views_slideshow_cycle']['wait_for_image_load'],
-    '#description' => t('If selected the slideshow will not start unless all the slide images are loaded.  This will fix some issues on IE7/IE8/Chrome/Opera.'),
-    '#states' => array(
-      'visible' => array(
-        ':input[name="style_options[views_slideshow_cycle][action_advanced]"]' => array('checked' => TRUE),
-      ),
-    ),
-  );
 
   $json2_path = libraries_get_path('json2');
   if (empty($json2_path) || !file_exists($json2_path . '/json2.js')) {
