So you have an ordered list of things you want to put into two columns via XSLT.
I've always done this a very hard way in the past using recursive stack popping logic.
Here's a super easy way to do it.
<
<td width="50%" valign="top">
<xsl:apply-templates select="item[(position() mod 2) = 1] " mode="child-categories"/>
</td>
<xsl:apply-templates select=“item[(position() mod 2) = 0] " mode="child-categories"/>
</tr>