To do it without any extra markup, which is not a very good idea (you should use a list), you need to set the line-height property the same as the height property. You can forget about the vertical-align property (as far as this is concerned).
vertical-align will work only if you set the display of the element to table-cell. but still, it won't work on IE6<. so it's whether you use a table where you want your content to be vertically aligned or try to achieve it using paddings / margins / line-heights.