Captcha Failed on Custom Validation
This a improved version of your code 

  if ($form_id == 'user_login') {
        $form['#validate'][] = 'wemusic_user_login_validate';
        $form['#submit'] = array();
        array_unshift($form['#submit'], 'wemusic_user_login_submit');
    }

function wemusic_user_login_validate($form, &amp;$form_state){
    $username = $form['name']['#value'];
    $user = user_load_by_name($username);
    if ($user &amp;&amp; $user-&gt;status != "1"){
            drupal_set_message("Baba Taid kon bad boro to",'error');
            drupal_goto('registration/confirm', array('query'=&gt;array(
                'user'=&gt;$username,
            )));
    }
   else {
        drupal_set_message("Sabenam nakarde mikhay beri to akhe amo ?!!!",'error');
        drupal_goto('user/register');
    }
} 


When you are in user_login and user is going to login don't empty $form_state  with $form_state = array(); Let Drupal Handle it's way to log on user  you just check what you want before it.

This will work for you , but I think is better when the situation is not satisfied in validator set error and set a destination variable on $form_state  ( maybe $form_state['redirect'] or your custom $form_state['my_redirect'] )  then in form_alter  check if  your error exists redirect to that destination with Drupal_goto.

Any way mentioned code ( up code) satisfy what you want.