Page template for custom form
Here is your issue, your can't return twice in a function.

function mymodule_custom_page(){
  return theme('mymodule_template');
  return drupal_get_form('mymodule_form');
}


What you need to do is just the first line,  return theme('mymodule_template'); You also need to change your form function parameters to &amp;$form, &amp;$form_state. 

Then, in your custompage.tpl.php, you do the drupal_get_form('mymodule_form');

Result:

/*
* Implements hook_menu
*/

function mymodule_menu() {
  $items = array();
  $items['foo/my_custom_form'] = array(
    'title' =&gt; 'My custom form',
    'page callback' =&gt; 'mymodule_custom_page',
    'access callback' =&gt; TRUE, // Everyone has access.
  );
  return $items;
}

function mymodule_custom_page(){
  return theme('mymodule_template');
}

/*
* Implements Hook_theme
*/

function mymodule_theme() {
  return array(
    'mymodule_template' =&gt; array(
      'template' =&gt; 'custompage', // template file called custompage.tpl.php
      'arguments' =&gt; array(),
    ),
  );
}

function mymodule_form(&amp;$form, &amp;$form_state){
  //my form in here
}


And in custompage.tpl.php:

print drupal_get_form('mymodule_form');