Hi,
Create a products listing menu item, and in its "sub elements filter" setting, select "group by category" and it will display like that.
It won't have the category description by default but it's easy to add.
Just add such code:
<?php echo echo $category['category']->category_description; ?>
after the code:
<h2><?php echo $category['category']->category_name; ?></h2>
in the file "listing" of the view "product" for your frontend template via the menu Display>Views.
You can also use the loadposition system to load product listing modules in a Joomla article and do that manually.