Why this callback doesn't show all node form?
The following line in your code is wrong.

$new_node-&gt;type = 'signup_node_form'


What you are setting as node type is really the form ID, not the content type ID. If you look at the code of node_add(), you will notice the executed code is the following one.

  $types = node_type_get_types();
  $node = (object) array(
    'uid' =&gt; $user-&gt;uid,
    'name' =&gt; (isset($user-&gt;name) ? $user-&gt;name : ''),
    'type' =&gt; $type,
    'language' =&gt; LANGUAGE_NONE,
  );
  drupal_set_title(t('Create @name', array('@name' =&gt; $types[$type]-&gt;name)), PASS_THROUGH);
  $output = drupal_get_form($type . '_node_form', $node);


$type is the parameter the function gets.
If you look at the content type IDs used in Drupal, none of them contains the string "_node_form"; differently, node_add() would call drupal_get_form() passing something similar to "story_node_form_node_form" as form ID. As the modules that add fields to the node edit form check the content type of the node, it is probable they don't add fields for a content type they don't know. That is plausible, as differently it would mean that a taxonomy term field, for example, would be added to nodes for which it was not supposed to be added.