You could try writing a stored procedure that updates the password column in master.dbo.sysxlogins and giving the users permission to execute it. Look at master.dbo.sp_password for the update code. You can't simply grant execute permission to sp_password because it checks to see if the user executing it is a member of the securityadmin server role.
I've never tried this so I don't know if there are other restrictions that you'd have to work around.
Greg