diff -uNr gdm-2.26.0.orig/gui/simple-greeter/gdm-greeter-session.c gdm-2.26.0/gui/simple-greeter/gdm-greeter-session.c
--- gdm-2.26.0.orig/gui/simple-greeter/gdm-greeter-session.c	2009-04-01 16:49:48.000000000 -0400
+++ gdm-2.26.0/gui/simple-greeter/gdm-greeter-session.c	2009-04-01 16:44:45.000000000 -0400
@@ -37,6 +37,9 @@
 #include "gdm-greeter-client.h"
 #include "gdm-greeter-panel.h"
 #include "gdm-greeter-login-window.h"
+#include "gdm-user-chooser-widget.h"
+#define KEY_SHOW_USER_OPTIONS_EARLY \
+	"/apps/gdm/simple-greeter/show_user_options_early"
 
 #include "gdm-profile.h"
 
@@ -102,11 +105,29 @@
 }
 
 static void
+show_or_hide_user_options(GdmGreeterSession *session, const char *username)
+{
+	GConfClient	*client;
+	gboolean 	result;
+
+	client = gconf_client_get_default ();
+        result = gconf_client_get_bool(client,KEY_SHOW_USER_OPTIONS_EARLY,NULL);
+	g_object_unref(client);
+
+	if (result || (username != NULL && strcmp(username, GDM_USER_CHOOSER_USER_OTHER) != 0))
+            gdm_greeter_panel_show_user_options (GDM_GREETER_PANEL (session->priv->panel));
+	else
+            gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel));
+		
+}
+
+static void
 on_selected_user_changed (GdmGreeterClient  *client,
                           const char        *text,
                           GdmGreeterSession *session)
 {
         g_debug ("GdmGreeterSession: selected user changed: %s", text);
+        show_or_hide_user_options(session, text);
 }
 
 static void
@@ -240,7 +261,7 @@
                 const char            *text,
                 GdmGreeterSession     *session)
 {
-        gdm_greeter_panel_show_user_options (GDM_GREETER_PANEL (session->priv->panel));
+        show_or_hide_user_options(session, text);
         gdm_greeter_client_call_select_user (session->priv->client,
                                              text);
 }
--- gdm-2.26.0.orig/gui/simple-greeter/gdm-simple-greeter.schemas.in	2009-04-01 16:49:48.000000000 -0400
+++ gdm-2.26.0/gui/simple-greeter/gdm-simple-greeter.schemas.in	2009-04-02 11:18:22.000000000 -0400
@@ -1,5 +1,16 @@
 <gconfschemafile>
   <schemalist>
+    <schema>
+      <key>/schemas/apps/gdm/simple-greeter/show_user_options_early</key>
+      <applyto>/apps/gdm/simple-greeter/show_user_options_early</applyto>
+      <owner>gdm-simple-greeter</owner>
+      <type>bool</type>
+      <default>false</default>
+      <locale name="C">
+        <short>Show user options before username entered</short>
+        <long>If enabled, user options can be selected before username entry. Selections will be reread from saved values if username is altered during authentication, so this option is useful only on systems where the username is not known until authentication is complete.</long>
+      </locale>
+    </schema>
 
     <schema>
       <key>/schemas/apps/gdm/simple-greeter/debug</key>
