I think you're taking the wrong approach here. In Drupal 7 you don't need to be calling the theme() method at all. You should instead focus on renderable arrays and calling drupal_render() which in turn calls theme() for you.
With that out of the way, lets focus on your problem at hand:
You should create a my hook_theme() implementation. This hook defines whether you are using a function or a template file for rendering your HTML. It also defines which variables to pass to the function/template. Here is a brief example of a hook_theme() implementation:
mymodule_theme($existing, $type, $theme, $path) {
return array(
'theme_name' => array(
'variables' => array(
'options' => NULL,
)
'template' => 'theme-name'
);
}
In this example, when calling 'theme_name' you will also be able to pass a variable (options).
After that, create your tpl.php file and populate it with the HTML and data you want. You either create a template file or a function but not both.
Now, in the callback for your menu, you want to return a renderable array like so:
$output = array(
'#theme' => 'theme-name',
'#options' => $aVariable,
);
return $output;
As Clive mentioned in the comment, it would be more useful if you post all your methods referring to your problem so we may better gauge your problem.