Halt registration when certain conditions are (not) met
Do hook_form_alter for user registration form, and add extra validation function to the form using #validate like below.

$form['#validate'][] = 'extra_user_validation';


in function extra_user_validation set error after validation. So, that you can avoid the submit process and invoking hooks.

function extra_user_validation($form, &amp;$form_state) {
   // Get the input values of registration form from $form_state['values']
   // Do validation &amp; set error
}


That should work !