You might be able to do this using a password field. Then using CB Auto Actions try to validate it on onBeforeUserUpdate. If it doesn't match then set an error in the user object or $_PLUGIN to block the save process. The below might work, but I've never tried it so you likely will need to trial and error it.
Global
Triggers: onBeforeUserUpdate
Type: Code
User: Automatic
Access: Everybody
Conditions
1: [var1_cb_editpassword] Not Equal To [var3_cb_editpassword]
Action
Method: PHP
Code:
Code:
global $_PLUGINS;
$_PLUGINS->_setErrorMSG( CBTxt::T( 'Profile edit password is not valid.' ) );
The password would be set during registration. This will not allow them to change it unfortunately as it can't be changed and also validated at the same time. The profile owner would supply the password they set during registration which should allow profile edit to save. If they don't or it doesn't match then it should reject the profile edit save with the error supplied.
I suppose if they want to change that password they'd have to contact you to do so or you'd need to figure out some other way to validate profile edit permission.