Welcome [webmasterworld.com] to Webmaster World! :)
What you describe is indeed a tricky layout, especially if it's intended to be cross-browser compatible.
Unfortunately it's not (at least not yet, but future CSS plans are promising) as easy to do this as it is with tables. Then again, tables have been around much longer :)
Still, using the basic "table thinking" works here as well.
First of all, you want the total height to be 100%, right? Say that the header and footer are each 20%. That leaves 60% for the rest of the page.
Now, as you may have noticed... you wouldn't be able to only define a height for the header and footer, and make the "text" section fill in the gap.
Using a wrapping div is a possible solution.
Again, this only works as long as the content doesn't expand beyond 100%... in which case the footer would overlap some text - not pretty. Also, 100% height is interpreted differently in the different browsers.
So, the only water proof solution, for right now, is to use tables...