Specify which theme to use when rendering a page with drupal_render_page()
I discovered that menu_get_custom_theme() only uses a custom theme if the menu does NOT have a "theme callback". In the case of the batch process, it does have a theme callback: _system_batch_theme().

To specify what theme to use when rendering a batch process, I had to use hook_menu_alter() to change the theme callback to my own.

function MYMODULE_menu_alter(&amp;$items) {

  $items['batch']['theme callback'] = 'MYMODULE_batch_theme';

}


Then I just needed to add a conditional

function MYMODULE_batch_theme() {

  // Use a Custom Theme
  if ($_REQUEST['op'] == 'do') {
    return 'email';
  }
  else {
    return _system_batch_theme();
  }

}


This fixes the problem by specify the custom theme in the theme callback rather than in hook_custom_theme() (which is ignored when a theme callback is present).

Thanks!