ie7

vertical-align:middle в IE7

Для нормальных браузеров помещаем текст/картинку в контейнер, для контейнера задаём:

display:table-cell;
vertical-align:middle;

для ie7 контейнеру задаем display:block
 

А для самого элемента, который нужно выровнять:

display:block;
margin-top: expression((parentNode.offsetHeight.offsetHeight/2)-(parseInt(this.offsetHeight)/2) <0 ? "0" :(parentNode.offsetHeight/2)-(parseInt(this.offsetHeight)/2) + 'px');

Подробнее