My custom preprocess function works as soon as the cache is cleared, then stops working
Drupal is looking to include the following file:

drupal_get_path('module', 'mymodule') . '/templates' . '/mymodule.theme.inc'


but, you say that you've put it in the main module folder, here:

drupal_get_path('module', 'mymodule') . '/mymodule.theme.inc'


So Drupal isn't going to include the file on subsequent calls to the theme function. So, you might want to move your include.

You can see this from how your hook_theme is processed in: _theme_process_registry