Index: wp-admin/includes/user.php
===================================================================
--- wp-admin/includes/user.php	(revision 15892)
+++ wp-admin/includes/user.php	(working copy)
@@ -110,7 +110,7 @@
 	if ( isset( $_POST['description'] ) )
 		$user->description = trim( $_POST['description'] );
 
-	foreach ( _wp_get_user_contactmethods() as $method => $name ) {
+	foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) {
 		if ( isset( $_POST[$method] ))
 			$user->$method = sanitize_text_field( $_POST[$method] );
 	}
@@ -224,7 +224,7 @@
 function get_user_to_edit( $user_id ) {
 	$user = new WP_User( $user_id );
 
-	$user_contactmethods = _wp_get_user_contactmethods();
+	$user_contactmethods = _wp_get_user_contactmethods( $user );
 	foreach ($user_contactmethods as $method => $name) {
 		if ( empty( $user->{$method} ) )
 			$user->{$method} = '';
Index: wp-admin/user-edit.php
===================================================================
--- wp-admin/user-edit.php	(revision 15892)
+++ wp-admin/user-edit.php	(working copy)
@@ -322,7 +322,7 @@
 </tr>
 
 <?php
-	foreach (_wp_get_user_contactmethods() as $name => $desc) {
+	foreach (_wp_get_user_contactmethods( $profileuser ) as $name => $desc) {
 ?>
 <tr>
 	<th><label for="<?php echo $name; ?>"><?php echo apply_filters('user_'.$name.'_label', $desc); ?></label></th>
Index: wp-includes/registration.php
===================================================================
--- wp-includes/registration.php	(revision 15892)
+++ wp-includes/registration.php	(working copy)
@@ -211,20 +211,19 @@
 	update_user_meta( $user_id, 'admin_color', $admin_color);
 	update_user_meta( $user_id, 'use_ssl', $use_ssl);
 
-	foreach ( _wp_get_user_contactmethods() as $method => $name ) {
+	$user = new WP_User($user_id);
+
+	foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) {
 		if ( empty($$method) )
 			$$method = '';
 
 		update_user_meta( $user_id, $method, $$method );
 	}
 
-	if ( isset($role) ) {
-		$user = new WP_User($user_id);
+	if ( isset($role) )
 		$user->set_role($role);
-	} elseif ( !$update ) {
-		$user = new WP_User($user_id);
+	elseif ( !$update )
 		$user->set_role(get_option('default_role'));
-	}
 
 	wp_cache_delete($user_id, 'users');
 	wp_cache_delete($user_login, 'userlogins');
@@ -319,15 +318,16 @@
  * @access private
  * @since
  *
+ * @param object $user User data object (optional)
  * @return array $user_contactmethods Array of contact methods and their labels.
  */
-function _wp_get_user_contactmethods() {
+function _wp_get_user_contactmethods( $user = null ) {
 	$user_contactmethods = array(
 		'aim' => __('AIM'),
 		'yim' => __('Yahoo IM'),
 		'jabber' => __('Jabber / Google Talk')
 	);
-	return apply_filters('user_contactmethods',$user_contactmethods);
+	return apply_filters( 'user_contactmethods', $user_contactmethods, $user );
 }
 
 ?>
