Haben Header und Footer bekannte Höhen? Dann kanst du beide absolut bzw. fixed positionieren und dem body oben und unten antsprechendes padding geben.
Oder, wenn du pures HTML5 verwenden willst/kannst css calc
Oder aber du positionierst die entsprechenden Elemente einfach absolute/fixed und gibst für den "mittelteil" Werte für oben und unten an - dabei streikt aber glaube ich der IE7.