How to alter a form base on the users' request info?
You should definitely use hook_form_alter() for that - no need to go a different route, it'll just make things harder for no benefit. Doing things the standard way your code could be as simple as:

function MYMODULE_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  if ($form_id == 'foo_form' &amp;&amp; isset($_GET['bar'])) {
    $form['baz']['#access'] = FALSE;
  }
}