Hope this helps someone...
First of all, I allowed users to have '@' and '.' in their usernames.
On registration I hid the 'username' field and had a note at the e-mail address that says your e-mail address will also be your username.
On submitting, the e-mail address is assigned to the username. (uname = email)
After successful submission, the e-mail field cannot be changed again by the user - if they want to edit the profile, they can, but the e-mail field is not edit-able. Yip, that means if your e-mail address changes you have to create a new user and profile, but that doesnt happen often.
After all that effort I stumbled across a much bigger issue... since I have x-cart pro and the providers also use their e-mail addresses as username, the providers must have another e-mail account ready to also register as customers, since they cannot use the same e-mail address for the username as customer.
So, after all my effort I am back at the usernames as it was, except that I still allow '@' and '.' in the username.
Sometimes your learn from other's errors, sometimes they learn from yours!