Form built with drupal_render() won't submit

You may chose to render form elements individually in your custom theme. In that case you need to remember to add the following elements to your output:

 

drupal_render($form['form_build_id']), drupal_render($form['form_id']) and drupal_render($form['form_token'])

 

If you do not include them Drupal 7 will ignore the form submission (and your submit handler(s).

If you arrived here trying to find out how to render the form elements individually you'll have to

  1. set the '#theme' element in the form array to [theme_function_name] that you define
  2. implement hook_theme and your theme function (signature: function theme_[theme_function_name] ($variables) 
  3. render the elements as you please using the keyed form array in $variables['form']
  4. append

    drupal_render($form['form_build_id']) . drupal_render($form['form_id']) . drupal_render($form['form_token'])
    to your output

Get in touch if you need a complete example.