В общем случае решения нет, зато есть куча частностей.
Если текст в одну строку и есть возможность использовать абсолют (что далеко не всегда)то —
position:absolute;
width:100%;
top:50%;
text-align:center;
Если известна высота блока и можно использовать абсолют, то вариант предложенный выше.
Если нельзя использовать абсолют, но известна высота блока и текст в одну стоку — то через line-height равный высоте блока.
Ну и 100% кроссбраузерная классика о которой вечно все забывают — зафигачить таблицей с одной ячейкой.