Io lo so fare nei casi di cui sopra.
In particolare puoi usare il vertical-align in qualsiasi blocco che sia definito:
display: table-cell;
Ma non credo che funzioni in IE.