AJAX added fields don't hide
To show or hide some form elements you can use #states attribute.

$form['fm_first_in_firm'] = array(
  '#type' =&gt; 'checkbox',
  '#title' =&gt; t('Show form.')
);

$form['firm_registration_container'] = array(
  '#type' =&gt; 'item',
  '#attributes' =&gt; array('id' =&gt; array('firm-reg-container-div')),
  // make this form item visible only if "fm_first_in_firm" is checked
  '#states' =&gt; array(
    'visible' =&gt; array(
      ':input[name="fm_first_in_firm"]' =&gt; array('checked' =&gt; TRUE)
    )
  )
);