Чтобы изменить пароль в тех ситуациях, решение которых не найдено выше, можно воспользоваться следующим методом: http://dev.1c-bitrix.ru/api_help/main/reference/cuser/update.php
Чтобы перед изменением пароля проверить, правильно ли введен старый пароль, можно разлогинить пользователя, и попробовать его залогинить с тем паролем, который он ввел как старый. Если залогинить удалось, функцией update() меняем пароль и авторизируем заново с помощью $USER->Authorize($USER->GetID());. Если залогинить не удалось, логиним пользователя с помощью хеша пароля (вероятно, его нужно будет предварительно сохранить в сессии перед тем, как вы будете разлогинивать пользователя).
Чтобы перед изменением пароля проверить, правильно ли введен старый пароль, можно разлогинить пользователя, и попробовать его залогинить с тем паролем, который он ввел как старый. Если залогинить удалось, функцией update() меняем пароль и авторизируем заново с помощью $USER->Authorize($USER->GetID());. Если залогинить не удалось, логиним пользователя с помощью хеша пароля (вероятно, его нужно будет предварительно сохранить в сессии перед тем, как вы будете разлогинивать пользователя).