Well I manage to find a solution with a raw query and join hoping that indexing of this fields are optimized by hikashop developers,
this solution isn't so smart but it seems to work.
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__hikashop_product_category'));
$query->join('INNER', $db->quoteName('#__hikashop_category') . ' ON (' . $db->quoteName('#__hikashop_category.category_id') . ' = ' . $db->quoteName('#__hikashop_product_category.category_id') . ')');
$query->join('LEFT', $db->quoteName('#__hikashop_file') . ' ON (' . $db->quoteName('#__hikashop_file.file_ref_id') . ' = ' . $db->quoteName('#__hikashop_category.category_id') . ')');
$query->where($db->quoteName('#__hikashop_product_category.product_id')." = ".$db->quote($product_id));
$db->setQuery($query);
$categories = $db->loadObjectList();
$cat_image = $this->image->display(@$categories[0]->file_path,true,"",'','', 100, 100);
or
$category = $db->loadAssoc();
$cat_image = $this->image->display($category['file_path'],true,"",'','', 100, 100);