How to prevent users editing their profile, but allow password change?
You might be able to use the module: Password Hustle


  Adds the password set form as an optional fields on the one click
  login. In other words, we encourage (hustle) the user into setting
  their password as they log into the site via a one click login.