diff -urp og_user_roles/og_user_roles.module og_user_roles-LOCAL/og_user_roles.module
--- og_user_roles/og_user_roles.module	2010-08-11 13:27:33.000000000 -0400
+++ og_user_roles-LOCAL/og_user_roles.module	2010-08-19 11:21:09.000000000 -0400
@@ -31,6 +31,7 @@ function og_user_roles_perm() {
   return array(
     'configure member roles',
     'override group default role',
+    'grant any role for group',
   );
 }
 
diff -urp og_user_roles/og_user_roles.pages.inc og_user_roles-LOCAL/og_user_roles.pages.inc
--- og_user_roles/og_user_roles.pages.inc	2009-12-06 14:26:37.000000000 -0500
+++ og_user_roles-LOCAL/og_user_roles.pages.inc	2010-08-19 15:29:11.000000000 -0400
@@ -1,4 +1,5 @@
 <?php
+
 // $Id: og_user_roles.pages.inc,v 1.5 2009/12/06 19:26:37 sun Exp $
 
 /**
@@ -76,7 +77,21 @@ function og_user_roles_admin_settings() 
 function og_user_roles_page($node) {
   drupal_set_title(t('Member roles for !title', array('!title' => l($node->title, "node/$node->nid"))));
 
-  $roles = og_user_roles_get_group_roles($node->type);
+  // Check if the current user has special role to expand list of roles
+  if (user_access('grant any role for group')) {
+    $roles = user_roles(true);
+    // Remove roles that do not belong in the list
+    $default_member = og_user_roles_get_group_default_role($node->nid);
+    $default_admin = null;
+    foreach ($roles as $rid => $name) {
+      if ($rid == DRUPAL_AUTHENTICATED_RID || (($rid == $default_member || $rid == $default_admin) && !user_access('override group default role'))) {
+        unset($roles[$rid]);
+      }
+    }
+  }
+  else {
+    $roles = og_user_roles_get_group_roles($node->type);
+  }
 
   // Retrieve list of all group users
   $sql = og_list_users_sql(0, 0, 'ou.is_admin DESC, ou.is_active ASC, u.name ASC');
