ceejayoz, I've got this working on my install, and it involved the following:
1. Changing registration to auto-generate a username (I used an md5 hash of their email and some other stuff)
2. Modifying the login code so that it'll accept an email address. This just checks if the "username" looks like an email address, and if it is, then it grabs whatever username is associated with that address and then continues with normal authentication from there -
function allow_email_login($user, $pass) {
global $wpdb;
if (is_email($user)) {
$user = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_email = '$user'");
}
return;
}
add_action('wp_authenticate', 'allow_email_login', false, 2);
3. I also modified my wp-login.php page to remove references to username (and avoid it re-filling the "username" field with my big ugly usernames) through the 'login_head' action, but I'll leave that up to you.
HTH,
Beau