I remember @julian mentioned some time ago we should allow users to login via either email or username - definitely something we wouldn't mind added to the core instead of a plugin 
As for showing the user's full name instead of their username, I would just modify the register.tpl template to add "First name" and "Last name" input boxes, and make "username" a hidden input. When the user hits submit, I would first validate and then concatenate first name and last name and save it in the username hidden input, the backend will take care of the rest as usual 
In your language file, change "username" to "full name" everywhere. I think that's it 