Add this to your style sheet and you will see why.
CODE
body { border: 5px dashed red }
BODY isn't higher than its content. Gecko's behavior regarding backgrounds has changed from version to version. At one point the color (or bg-image) of body was allowed to paint the whole screen even if body was shorter. Then for a period it helped to put the background on HTML instead. Now I think the only way is to make body expand to the window's full height.
CODE
html,body { height: 100% }
I wonder if this vertically centered background really is what you want though. Look at the page and resize the window up and down. On a large screen the book could be placed pretty far from the heading and there would be a lot of space in-between. A matter of taste, but I think it would look nicer if you positioned it a fixed distance from the top instead.
P.S. Don't forget to add a background color. The background is gray in my browser.