This works for me to get multiple row categories with icons in 4.1.1. My use doesn't need text or descriptions, so you'll have to add that back if you do. Still needs some cleaning up, but it works. This is just a snip from the template.
Code:
{if $subcategories}
<table border="0" cellspacing="5" width="100%">
<tr>
{foreach from=$subcategories item=subcat}
{if $tmp is not div by 2}
</tr><tr valign="top">
{/if}
<td class="SubcatTitle"><a href="home.php?cat={ $subcat.categoryid }" title="{ $subcat.category }">
[img]image.php?id={$subcat.categoryid}&type=C[/img]
</a></td>
{assign var="tmp" value=$tmp+1}
{/foreach}
</tr></table>
{/if}