Thanks, Tom. I think, in addition there should be something related to profile editing actions as well. Despite I understand this solution is mostly to prevent false registrations, if we talk about "valid" emails, in general, they may be changed after the profile has been already registered, to something else.
Also, this statement:
if($_SERVER['REQUEST_METHOD'] == "POST"
is a bit spare. In the condition, you should just catch the actions which already provide the posting behavior, i.e. they could be just 'register' and 'editprefs'.
Well, if we look into this more deeper, the solution would be even better, if it would throw not a "critical warning", but something on the profile form, in the style of other errors appearing now (i.e. above the form). Addresses like gmail.com could be also registered by human users. Then they would be preferred to keep their current form information with no coming back, while it could be just lost.