There's not an ideal place to hook into the registration process. I think there's a strong case to add a user registration event action hook to core. But I think you might be able to fake it, in the mean-time. One of the last things that happens when a user successfully registers, is the creation of a user option named 'default_password_nag'. We can create an action to watch for that, and set the user up when it's set.
add_action('update_user_metadata', 'my_auto_login', 10, 4);
function my_auto_login( $metaid, $userid, $key, $value ) {
// We only care about the password nag event. Ignore anything else.
if ( 'default_password_nag' !== $key && true !== $value) {
return;
}
// Set the current user variables, and give him a cookie.
wp_set_current_user( $userid );
wp_set_auth_cookie( $userid );
}
Untested, but should work, in theory.
Now that we have an idea what to do, I'll opine that I think this is a bad idea, security-wise. People can create junk accounts without even having to go through the trouble of setting up a junk email dropbox. :)