It won't be anything to do with <tbody>. Actually, <tbody> is not necessary here, but for those who are wondering what it does: You can group together table rows using <thead>, <tbody> and <tfoot> (or <tfooter>, I can't remember offhand). There can only be one <thead> and one <tfoot> in a table, but any number of <tbody>. Future browsers may use this for long tables that would otherwise take up more than the available screen height: the <tbody>s could be scrollable, so the <thead> and <tfoot> always remain visible. Already, a few browsers, when printing a table that spans several pages, will print the <thead> and <tfoot> on each page.
These are not implemented in NS4, so they will be ignored.
It's not a style sheet issue, because there is nothing at all on the page. If it were a style sheet problem, the text would be there but invisible, and you could highlight it. However, one thing you should always avoid if possible is mixing HTML and CSS colour attributes: stick to one or the other. If you specify this <body> tag, for example:
<body bgcolor="#000000" style="color: #ffffff;">
...that will show up white on black unless CSS is not supported or been disabled, in which case it will show up default (usually black) on black. That's a very obvious example, but it can be much more subtle than that, especially if you have an external stylesheet.
Anyway... I tried to count <table> and </table> tags, and lost count entirely, but when an entire page refuses to show up in NS4, the most likely explanation is that there is one closing </table> tag too few.