Index: modules/overlay/overlay-child.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/overlay/overlay-child.css,v
retrieving revision 1.6
diff -u -p -r1.6 overlay-child.css
--- modules/overlay/overlay-child.css	28 Jul 2010 01:26:00 -0000	1.6
+++ modules/overlay/overlay-child.css	9 Sep 2010 17:56:02 -0000
@@ -1,5 +1,29 @@
 /* $Id: overlay-child.css,v 1.6 2010/07/28 01:26:00 dries Exp $ */
 
+#overlay-disable-link a {
+  position: absolute !important;
+  clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
+  clip: rect(1px, 1px, 1px, 1px);
+}
+
+#overlay-disable-link a:active,
+#overlay-disable-link a:focus {
+  background: #666666;
+  clip: auto;
+  color: #fff;
+  display: block;
+  left: 50%;
+  margin-left: -25%;
+  margin-top: 2em;
+  max-width: 700px;
+  opacity: .9;
+  outline: 0;
+  padding: 1em;
+  position: fixed;
+  width: 50%;
+  z-index: 101;
+}
+
 html.js {
   background: transparent !important;
   overflow-y: scroll;
Index: modules/overlay/overlay-parent.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/overlay/overlay-parent.css,v
retrieving revision 1.15
diff -u -p -r1.15 overlay-parent.css
--- modules/overlay/overlay-parent.css	8 Jun 2010 05:16:29 -0000	1.15
+++ modules/overlay/overlay-parent.css	9 Sep 2010 17:56:02 -0000
@@ -1,5 +1,28 @@
 /* $Id: overlay-parent.css,v 1.15 2010/06/08 05:16:29 webchick Exp $ */
 
+#overlay-disable-link a {
+  position: absolute !important;
+  clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
+  clip: rect(1px, 1px, 1px, 1px);
+}
+
+#overlay-disable-link a:active,
+#overlay-disable-link a:focus {
+  background: #666666;
+  clip: auto;
+  color: #fff;
+  display: block;
+  left: 50%;
+  margin-left: -25%;
+  margin-top: 2em;
+  max-width: 700px;
+  opacity: .9;
+  outline: 0;
+  padding: 1em;
+  position: fixed;
+  width: 50%;
+}
+
 html.overlay-open,
 html.overlay-open body {
   height: 100%;
Index: modules/overlay/overlay.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/overlay/overlay.module,v
retrieving revision 1.31
diff -u -p -r1.31 overlay.module
--- modules/overlay/overlay.module	31 Aug 2010 15:04:09 -0000	1.31
+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -7,6 +7,16 @@
  */
 
 /**
+ * Current user prefers not to use the overlay.
+ */
+define('OVERLAY_PREFERENCE_DISABLED', 0);
+
+/**
+ * Current user prefers to use the overlay.
+ */
+define('OVERLAY_PREFERENCE_ENABLED', 1);
+
+/**
  * Implements hook_help().
  */
 function overlay_help($path, $arg) {
@@ -75,7 +85,7 @@ function overlay_form_user_profile_form_
         '#type' => 'checkbox',
         '#title' => t('Use the overlay for administrative pages.'),
         '#description' => t('Show administrative pages on top of the page you started from.'),
-        '#default_value' => isset($account->data['overlay']) ? $account->data['overlay'] : 1,
+        '#default_value' => isset($account->data['overlay']) ? $account->data['overlay'] : OVERLAY_PREFERENCE_ENABLED,
       );
     }
   }
@@ -105,8 +115,8 @@ function overlay_init() {
 
   // Only act if the user has access to the overlay and a mode was not already
   // set. Other modules can also enable the overlay directly for other uses.
-  $use_overlay = !isset($user->data['overlay']) || $user->data['overlay'];
-  if (empty($mode) && user_access('access overlay') && $use_overlay) {
+  $use_overlay = !isset($user->data['overlay']) || $user->data['overlay'] == OVERLAY_PREFERENCE_ENABLED;
+  if (empty($mode) && $use_overlay && user_access('access overlay')) {
     $current_path = current_path();
     // After overlay is enabled on the modules page, redirect to
     // <front>#overlay=admin/modules to actually enable the overlay.
@@ -254,10 +264,32 @@ function overlay_page_alter(&$page) {
     }
   }
 
-  if (overlay_get_mode() == 'child') {
+  $mode = overlay_get_mode();
+  if ($mode == 'child') {
     // Add the overlay wrapper before the html wrapper.
     array_unshift($page['#theme_wrappers'], 'overlay');
   }
+  elseif ($mode == 'parent') {
+    global $user;
+    // If the current user can access the overlay but has not expressed a preference regarding the overlay (or saved his/her profile),
+    // display a "disable overlay" link to the user profile for improved accessibility.
+    if (!isset($user->data['overlay']) && user_access('access overlay')) {
+      $page['page_top']['disable_overlay'] = array(
+        '#type' => 'link',
+        '#title' => t('If you are having problems accessing administrative pages (which are currently opening in an overlay on top of your website) or if you want to dismiss this message, you can set your overlay preferences on your user account page.'),
+        '#href' => 'user/' . $user->uid . '/edit',
+        '#options' => array(
+          'query' => drupal_get_destination(),
+          'fragment' => 'edit-overlay-control',
+          // Add the overlay-exclude class so the page won't be opened in the overlay.
+          'attributes' => array('class' => array('overlay-exclude')),
+        ),
+        '#prefix' => '<div id="overlay-disable-link">',
+        '#suffix' => '</div>',
+        '#weight' => -99,
+      );
+    }
+  }
 }
 
 /**
@@ -324,9 +356,27 @@ function overlay_preprocess_maintenance_
  * @see overlay.tpl.php
  */
 function template_preprocess_overlay(&$variables) {
+  global $user;
   $variables['tabs']              = menu_primary_local_tasks();
   $variables['title']             = drupal_get_title();
 
+  // If the current user can access the overlay but has not expressed a preference regarding the overlay (or saved his/her profile),
+  // display a "disable overlay" link to the user profile for improved accessibility.
+  if (!isset($user->data['overlay']) && user_access('access overlay')) {
+    $variables['disable_overlay_link'] = l(
+      t('If you are having problems accessing administrative pages (opening in this overlay on top of your website) or if you want to dismiss this message, you can set your overlay preferences on your user account page.'),
+      'user/' . $user->uid . '/edit',
+      array(
+        'query' => drupal_get_destination(),
+        'fragment' => 'edit-overlay-control',
+        // Add the overlay-exclude class so the page won't be opened in the overlay.
+        'attributes' => array('class' => array('overlay-exclude'))
+      )
+    );
+  }
+  else {
+    $variables['disable_overlay_link'] = FALSE;
+  }
   $variables['content_attributes_array']['class'][] = 'clearfix';
 }
 
Index: modules/overlay/overlay.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/overlay/overlay.tpl.php,v
retrieving revision 1.3
diff -u -p -r1.3 overlay.tpl.php
--- modules/overlay/overlay.tpl.php	11 Jul 2010 22:03:45 -0000	1.3
+++ modules/overlay/overlay.tpl.php	9 Sep 2010 17:56:03 -0000
@@ -21,6 +21,7 @@
  */
 ?>
 
+<?php if ($disable_overlay_link): ?><div id="overlay-disable-link"><?php print $disable_overlay_link; ?></div><?php endif; ?>
 <div id="overlay" <?php print $attributes; ?>>
   <div id="overlay-titlebar" class="clearfix">
     <div id="overlay-title-wrapper" class="clearfix">
