Rebuild form is not working in #ajax callback
Setting the rebuild in the ajax callback will not work, as the form has already been built at that point. It needs to be set in a submit function, which is fired before the form is built. You also need to increment your counter in the submit function for the same reason - if you do it in the ajax callback, the form is already built so the increment is not saved. It needs to be done in the submit function.

function campaign_new_form_submit($form, &amp;$form_state)
{
  $form_state['num_names']++;
  $form_state['rebuild'] = TRUE;
}