I did this once for a 1-column report (long list of parts), which I actually displayed as 10 rows across. I did this by adding two fields to the data set:
FLOOR((ROW_NUMBER() OVER (ORDER BY PartID)-1) / 10) AS Row,
(ROW_NUMBER() OVER (ORDER BY PartID)-1) % 10) AS Col
And then I used a matrix with row and col as the row group and column group, respectively. You would of course replace 10 with 2. Since you have two columns, you'd actually need a second, static column group.
This method will sort left-to-right, not top down. If you wanted top-down sorting, you'd have mess with the fields a little, but you should be able to get there.