Por ser compatível com browsers menos modernos, talvez essa seja a solução mais adequada na visão geral:
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
margin: auto;
Exige altura fixa (height)
Exemplo no JSBin
position: relative;
top: 50%;
transform: translateY(-50%);
Suporte: IE9+
Não exige altura fixa (height)
Exemplo no JSBin