I think the strategy would use to solve this problem is first create an ISettingControl for this property. Just make a UserControl, and implement ISettingControl which is a very simple interface with 2 methods SetValue and GetValue. For an example of ISettingControl see /Controls/GMapTypeSetting.ascx
You could even add this control to a profile like this:
Then what I would try is adding custom validator control(s) inside the UserControl, set the ValidationGroup to "profile" so it connects with the rest of the validation group.
I would not try using the user registered event handler as that fires after registration is successful.
Hope this helps and Thanks for the beer!