It's a bit challenging for me to not have a visual of what the browser output looks like, but here's a couple of thoughts after reading through the code:
* Single amp separates parameters here.
$wp_query = new WP_Query('showposts=30&orderby=date&order=asc&cat=6');
<div class="sponsor_info"></div>
only gets displayed if
$count == $grids
(3, in this case). So if you only have 2 items in a row, the description never gets displayed for #1 & #2.
You can try to rework it so that the "sponsor_info" div gets displayed in the same part of the loop that the "sponsor_logos" does so they're grouped together for each sponsor, or close the
if...else
for the "sponsor_logos" and start a new loop through the previous count to write out the sponsor info for the previous row of logos before moving to the next row.