To have it more dynamic, you can edit the file "view.html.php" of the "components/com_hikashop/views/product" folder.
Then change the SQL request to get the product category, and order the results on the category.
After that in the view, "product / listing_list" for each product, if the category is not the same as the previous product, so get the data of the category and display the result.
It require more changes than the other method which is more simple.
Here, at each update you will loose the changes, not in the other method.
With the load module method, you will only have to create a new module, and add a tag in the article.
The modification of the view is required only once.