Hi,
The category image is not a column on the category table, which is why your module can read every field except the image. Images are stored in a separate table (hikashop_file), one row per image, linked to the category with file_type = 'category' and file_ref_id = the category id. A category can have several images.
So you have two options.
1) Let the category class attach the image for you. When you load the categories through HikaShop's category class, pass its "category_image" argument as true, and each row then carries file_path (plus file_name and file_description):
$categoryClass = hikashop_get('class.category');
// getChildren($parentId, $all, $filters, $order, $start, $limit, $category_image = true)
$categories = $categoryClass->getChildren($parentId, false, array(), '', 0, 100, true);
If you hand-pick the categories by id instead of by parent, just load their images yourself and match them on the category id:
$db = JFactory::getDbo();
$db->setQuery('SELECT file_ref_id, file_path, file_name, file_description FROM '.hikashop_table('file').
' WHERE file_type = '.$db->quote('category').' AND file_ref_id IN ('.implode(',', $ids).') ORDER BY file_ordering ASC');
$images = $db->loadObjectList('file_ref_id'); // keyed by category id
// $images[$categoryId]->file_path is the image path of that category
2) To display it the way HikaShop does (same resized and cached thumbnail, same img tag), give that file_path to the image helper:
$image = hikashop_get('helper.image');
$options = array('default' => true, 'forcesize' => true, 'scale' => 'inside');
$thumb = $image->getThumbnail($cat->file_path, array('width' => $image->main_thumbnail_x, 'height' => $image->main_thumbnail_y), $options);
echo $image->renderImgFrom($thumb, array('class' => 'hikashop_category_image', 'alt' => $cat->file_name));
That last part is exactly what the default category listing uses (front/views/category/tmpl/listing_img_pane.php), so your module will match the rest of the shop.