Why form redirects to encoded url when having GET params?
You just need to adjust the param value from a string to an array for $form_state['redirect']

It is in the documentation for drupal_redirect_form


  $form_state['redirect'] determines where to redirect the user. This can be set either to a string (the path to redirect to), or an array of arguments for drupal_goto().


Example:

$form_state['redirect'] = array(
  arg(0) . '/' . arg(1) . '/' . arg(2),
  'query' =&gt; array(
        'brand' =&gt; $form_state['values']['brand'],
        'categ' =&gt; arg(2)
  )
);