More reading on this problem, and potential fixes.
A classic CSS problem. The logical CSS property to use here is vertical-align, but it only applies to table cells and inline elements. So what's a poor web developer to do when trying to vertically center an element in a div?
One potential solution is to set up the containing div as a CSS table. If you use the CSS2 table value for the display property, you can then apply the vertical-align property, and Bob's your uncle... except CSS tables don't work in IE, do they? So back to square one.
There's a bit of a hack-ish way of doing it that involves positioning, and you need a few container divs to do it. Basically you offset one div 50% from the top, then you bump its child back up using relative positioning and a value of -50%. There are a bunch of hacks needed to make it co-exist in both IE and other browsers, but if you're desperate and you can stomach the idea of a few CSS hacks, there's one solution.
One final possibility is using the line-height property. If you set the value to an equivalent of the height of the containing element, you can effectively position the element right in the vertical middle of it. Watch out for wrapping lines of text though, you can really only pull this off with images or small snippets of text.