Multistep form submission fails
This is actually easier than it looks! :)

Use the one submit callback and in it use a switch or if statement to execute different actions depdending on what step you're on.

function my_form_submit($form, &amp;$form_state) {
  if (!isset($form_state['storage']['step'])) {
    $form_state['storage']['step'] = 'step-two';
    $form_state['rebuild'] = TRUE;
  }
  else if ($form_state['storage']['step'] === 'step-two') {
    // do something awesome for step-two
  }
}


UPDATED

The following is working code I have running in Drupal 6:

  // multistep form
  if (!isset($form_state['storage']['page']) || $form_state['storage']['page'] &lt; 4) {
    $form_state['rebuild'] = TRUE;
    $page = $form_state['storage']['page'];
    $form_state['storage'][$page]['values'] = $form_state['values'];
    $form_state['storage']['page']++;
  }
  // process submit
  else {
    // grab submitted values for each step from storage array
  }


It runs in the only submit handler of a multistep form.

I realize this is Drupal 6 but its close enough, can you try this?