Классический ответ на ваш вопрос - CSS Columns. Это уже обсуждалось в другом ответе. Это дает вам возможность разделить блок на столбцы.
В другом ответе вы указали, что он может не сработать, поскольку вы хотите расположить графические элементы и обтекать их текстом.
Это может быть возможно с помощью CSS-столбцов - я должен признаться, что я не пробовал, но можно заставить текст нормально обтекать графику, поэтому я не понимаю, почему это не может быть возможно с Столбцы, так как они должны работать как любой другой блок, кроме расположения текста внутри него.
Однако, если этого недостаточно для вас, тогда CSS действительно предлагает другое решение под названием CSS Regions. Это механизм, который позволяет указать, что текст может перетекать из одного элемента в другой. Вы можете связать свои блоки и расположить их так, как вам нравится. Это дает вам полную свободу выкладывать свою страницу так, как вам нравится.
Подробнее об этом можно узнать здесь: http://msdn.microsoft.com/en-us/ie/hh272902#_CSSConnected
По сути, это абсолютно бесплатная система верстки страниц, и она должна быть именно тем, что вы ищете.
Это хорошая новость.
Плохая новость заключается в том, что в настоящее время CSS Regions практически не поддерживают браузеры. См. CanIUse для полной информации о поддержке браузера. Как видно из таблиц по этой ссылке, она поставляется в нескольких браузерах, но даже после ее реализации у нее не будет достаточной поддержки со стороны пользователей, чтобы ее можно было использовать.
Какой позор, потому что это именно то, что вы ищете.