La solución sería más o menos así... anteriormente tuve un dilema parecido, y esta solución me funciono de maravilla!!! Analiza un poco el código y me avisas que tal... aquí tienes el enlace con toda info... el autor se esmero en escribir a detalle, http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
Código HTML:
<div id="outer">
<div id="middle">
<div id="inner">
any text
any height
any content, for example generated from DB
everything is vertically centered
</div>
</div>
</div>
<style type="text/css">
#outer {width: 100%;height: 400px; overflow: hidden; position: relative;}
#outer[id] {display: table; position: static;}
#middle {position: absolute; top: 50%;} /* for explorer only*/
#middle[id] {display: table-cell; vertical-align: middle; width: 100%;}
#inner {width: 200px; margin-left: auto; margin-right: auto;position: relative; top: -50%} /* for explorer only */
/* optional: #inner[id] {position: static;} */
</style>
Saludos!!!