diff --git modules/user/user.pages.inc modules/user/user.pages.inc
index 9dcc484..85102fe 100644
--- modules/user/user.pages.inc
+++ modules/user/user.pages.inc
@@ -302,13 +302,19 @@ function user_profile_form_submit($form, &$form_state) {
   // Remove unneeded values.
   form_state_values_clean($form_state);
 
+  // Before updating the account entity, keep an unchanged copy for use with
+  // user_save() later. This is necessary for modules implementing the user
+  // hooks to be able to react on changes by comparing the values of $account
+  // and $edit.
+  $account_unchanged = clone $account;
+
   entity_form_submit_build_entity('user', $account, $form, $form_state);
 
   // Populate $edit with the properties of $account, which have been edited on
   // this form by taking over all values, which appear in the form values too.
   $edit = array_intersect_key((array) $account, $form_state['values']);
 
-  user_save($account, $edit, $category);
+  user_save($account_unchanged, $edit, $category);
   $form_state['values']['uid'] = $account->uid;
 
   if ($category == 'account' && !empty($edit['pass'])) {
