Don't Be Afraid My Child
Ok, I know you think this code looks scary, but it works cross-browser, without tables and most of the code in this example you should have already. I admit, I don't quite understand as to why it works but let me try to explain.
First of all, note that we set #middle and #outer to the same height, this is done so the table cell would work as well as to prevent shrink wrapping. As I have said above, IE does not support "display: table-cell;", and that is why we are using IE conditional comments to pass some properties to it. What we did is shift the top of the #inner to the middle of #middle and then we used IE's broken implementation of "position: relative;" to shift #inner half way up. I know it is a lousy explanation but you are probably already trying out this code not caring about why it works.
I quote the words from the original site where I found this demo (I modified it quite a bit to prevent shrink wrapping, i.e. making it look the same in IE and other browsers):
--...examples don't work in IE 5.2 for Mac. As I haven't Mac, I can't test it. Please let me know (dusan@pc-slany.cz) when you'd find any workaround....---
I don't have a Mac either, therefore, if you know a workaround please tell me.