Модель объектов документа выражающаяся в XHTML очень логическая структура и гибкая. Проблема в том что ни создатели, как так часто бывает, ни веб-разработчики (и я в их числе) не представляют в полной мере всю гибкость и возможности оптимального позиционирования, из-за этого постоянно возникают вопросы и хаки, решающие проблему не-табличным решением.
Вертикальная оцентровка
Вертикальное позиционирование например предлагается делать через относительное абсолютное позиционирование, но замечу что хотя идея хорошая, просто взять и написать ниже приведённый код нельзя, потому что -50% не прокатит в Firefox и Safari. Никита кстати тоже не заметил это, потому что оба выравнивают строчку текста и пол строчки разница небольшая, да и к тому же имеет место быть какой-то хак для IE.
#container {top:50%;position: absolute;}
#inner {top:-50%;position:relative;}
Поэтому в моём случае, где это действительно полезно, при показе login-формы, надо ставить реальные пиксели сдвига вверх вместо процентов. Более простой пример, где нужна плавающая ширина контейнера я не рассматриваю.
Горизонтальная оцентровка
Можно сделать тот же вариант с параметром left. Проблема в том, что как только окно станет меньше ширины контейнера, то левая половина контейнера спрячется, поскольку весь контейнер целиком привязан точно к центру. Поэтому пробуем оцентровку текста:
#container {text-align:center;}
#inner {text-align:left;margin:0 auto;}
Полная оцентровка
Поскольку нам надо теперь контейнер сделать абсолютным, то выравнивание текста не сможет совладать с хитрыми элементами. Для этого вводим ещё один элемент.

Комментарии
Я у себя привел больше способов горизонтального центрирования
http://zodios.net/htmlcss/div-center.html