it's all those <input > lines. Because they're not in a cell, IE collects them all and displays them above the table. Mozilla doesn't do this.
You can prove this as I did by simply removing them line by line from the source and redisplaying.
You have two choices: don't generate them (what are they there for anyway?? There's no form that I can see.) or place them inside a <td>
<td><input type=hidden etc>Some text here</td> should do OK.