Intermittent hook_menu error - call_user_func_array() expects parameter 1 to be a valid callback
You say your code is in my_module.inc, which means you have to tell the menu system that it is in there.

By default drupal will load my_module.module, but because the function is not in there it can't find the function.

As a side note, generally you should put hooks like hook_menu() in the .module file.

To tell the menu system that it has to load my_module.inc for your menu callback, do this:

$items['download/register'] = array(
  'title' =&gt; 'Register to Download a Lesson Plan',
  'access callback' =&gt; TRUE,
  'type' =&gt; MENU_CALLBACK,
  'page callback' =&gt; '_protected_download',
  'file' =&gt; 'my_module.inc',
);


Note the 'file' param.

Also, I made a couple of other changes:


Removed t() from the title and removed the 'title callback', because by default title callback is t().
Removed the 'path' param and changes the array key for the menu item. The path param was used in drupal 6 but not in drupal 7.