WordPress usernames are unique. And by default, so are email addresses. I would recommend against changing this behaviour (see below for details). People remember their email addresses more readily than their usernames, so using their email address to log in is very useful.
Replace authenticate filter to allow email login
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
add_filter( 'authenticate', 'tcb_authenticate_username_password', 20, 3 );
function tcb_authenticate_username_password( $user, $username, $password ) {
if ( ! empty( $username ) && is_email( $username ) ) :
if ( $user = get_user_by_email( $username )
$username = $user->user_login;
endif;
return wp_authenticate_username_password( null, $username, $password );
}
This works by checking if the username supplied is an email address. If it is, then it finds the username associated with the email and uses that for authentication.
Multiple accounts per email
Although it is possible to allow multiple accounts per email address, it further complicates other core functions. Most importantly, the core password reset method assumes unique emails. The code above will not work in this case.