vertical-align
does not work with floated elements.
You could set line-height though as in this fiddle:
div#top_nav {height:40px; background-color:#eee; padding:5px; line-height: 38px}
As a side note: don't add the tag names to the rule if you're using id-selectors, e.g:
div#top_nav {line-height: 38px} //Bad
#top_nav {line-height: 38px} //Good