Use part of the user_profile_form on another page
I made this work based on the work by Erik. I guess you could do ['#access']=false for all the values you don't want.

//Provide a custom page at /custom-profile to access our custom profile form
function mymodule_menu() {
  $items['custom-profile'] = array(
   'title' =&gt; 'Custom Profile!',
   'page callback' =&gt; 'mymodule_custom_profile',
   'access callback' =&gt; TRUE, 
   'type' =&gt; MENU_NORMAL_ITEM,
 );
}

//displays the custom form at /custom-profile
function mymodule_custom_profile() {
  module_load_include('inc', 'user', 'user.pages');

  global $user;  
  $user = user_load($user-&gt;uid);

  $form = drupal_get_form('user_profile_form', $user, 'account', 'custom'); 

  return $form;
}

function mymodule_form_user_profile_form_alter(&amp;$form, &amp;$form_state){
  //modifies the form_user_profile DO CUSTOM STUFF BELOW!
  if(isset($form_state['build_info']['args'][2]) &amp;&amp; 
           $form_state['build_info']['args'][2] = 'custom'){

   //rename submit button
   $form['actions']['submit']['#value'] = t("dooo it!");

   //remove a few account things from this page
   $form['account']['#access']=FALSE;

   //needs to be there for the picture to work
   form_load_include($form_state, 'inc', 'user', 'user.pages');
  }
}