My bad.. I changed my function.thumb.php
In function.thumb.php, mine says..
if (empty($params['cache'])) $_CONFIG['cache'] = 'files/cache/';
What does yours say?
Also, the detailed image is probably where it is supposed to be (where you told X-cart to put it) so that isn't a problem.
I have uploaded my product_images.tpl (actually mod_product_images.tpl) so you can check it against what you have. It is kind of unique but you should be able to compare it to what you have (or simply "call" it by replacing your "include") to check your setup. It goes in skin1/modules/Detailed_Product_Images. I've also included blank_dialog.tpl which is pretty self-explained. It goes in /skin1. They are both for version 4.1.6.
I'm wondering, do you have the thumbnails on your server? The function.thumb.php will create them the first time a customer opens the page. Using either FTP or Cpanel look for the folder name "cache" and see if there are any of the thumbnails in it. The folder needs to have a htaccess with "Allow from all" (without quotes) in it and the folder needs to have writable permissions. Just make several of the folders where you think they may need to be (root, /xcart, /images, etc.) and one of them should fill up with thumbnails in no time. You may need to adjust your function.thumb.php to write the thumbnails where you want them.