On my site we require every user to pick a username, but users can log in with their username OR email address. This allows us to keep email addresses private, but also makes it easy for users who just can't or dont want to remember their username.
It's a simple regexp in your login controller to figure out if what they typed in should be checked against the email address or username field in your users table.