How to get 'add more items' / multiple fields working when creating a custom content type's create/edit input form using templates and theming (D7)?
The successful answer I found would be not to build the form from scratch as described in: https://drupal.stackexchange.com/a/68975/1082

But instead to use the standard default content type entry form and to customise it to only show certain fields, using the php unset function to hide the input fields that you don't want to be displayed (provided they are non-mandatory of course).

In theme code, template.php

function theme_form_alter(&amp;$form, &amp;$form_state, $form_id) 
{
  if($form_id == 'machine_name_of_your_form') 
  {
    unset( $form['field_email'] );
  }
}


The benefit of this approach is that you start with a working form and take things off that you don't need. 

Contrast that with building a custom form from scratch which doesn't have that guarantee of working - well I found this anyway - as it seemed that even though here I included the essentials, things like multiple field handling didn't work and the submit didn't work either. 

So starting with the complete form and tweaking worked for me.

Update

An approach better than unset (and in fact is the official Drupal approach), is to use the #access property on form fields to hide them. For example, in your-theme_hook_alter function (hook_form_alter) in your theme's template.php you would do:

$form['field_email']['#access'] = false;


More details here: http://themery.com/dgd7/advanced-theming/forms/with-templates
(which is an excerpt from THE DEFINITIVE GUIDE TO DRUPAL 7 ebook and paper-based physical book from apress - see http://dgd7.org/ and http://apress.com)