Re-using / Customizing content types
Clive's answer is right.. You can not pass $node object before you created yet. If you want to show the same form which is shown in the /admin section you can do something like this:

function tasks_menu() {
  $items = array();

  $items['tasks/create'] = array (
    'type' =&gt; MENU_CALLBACK,
    'title' =&gt; t('Create New Task'),  
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('task_node_form'),
    'access arguments' =&gt; array('create tasks')    
  );

  return $items;
}


and:

function task_node_form($form, &amp;$form_state) {
  $form = array();
  $node = new stdClass();
  $node-&gt;type = 'YOUR TYPE';

  field_attach_form('node', $node, &amp;$form, &amp;$form_state, $langcode = NULL, $options = array())

  // Other code
}