This plugin is missing the validation, but it should put you in the right direction (at least 'right' by my defination :))
1st, modify wp-signup.php:
do_action( "preprocess_signup_form" );
if ($inviteOK) { // ADDED
if ( is_user_logged_in() )
signup_another_blog($blog_id);
else
signup_user( $blog_id, $user_email );
if ($blog_id) {
if( constant( "VHOST" ) == 'no' )
$newblog = 'http://' . $current_site->domain . $current_site->path . $blog_id . '/';
else
$newblog = 'http://' . $blog_id . '.' . $current_site->domain . $current_site->path;
printf(__("<p><em>The blog you were looking for, <strong>%s</strong> doesn't exist but you can create it now!</em></p>"), $newblog );
}
} // end $inviteOK
Download the invites.php.txt file, save it as invites.php, read the comments and add validation code. Put it in mu-plugins. You can test run it without doing any modifications.
Hope this helps.