mas bien que tienes esta linea en la parte donde verificas si la contraseña viene vacía:
Código PHP:
return $password;
¿sera por eso que no actualiza?
aunque en todo caso yo no lo haría así, mejor de otro modo:
Código PHP:
$data['user'] = $user;
if ( ! empty($pass)) $data['pass'] = $pass;
update($data);
sobre todo por que no tiene mucho sentido recuperar la contraseña de la BD cuando se omite del formulario, vamos, no tiene caso...