Да, через query_posts. Например, как-то так (делаем 3 колонки, в них выводим посты из разных категорий
верстка):
<div class="posts-container">
<div class="posts-column">
<?php
query_posts("category_name=cat1&posts_per_page=3");
if(have_posts()):while(have_posts()):the_post();
?>
<div class="post-item">
/*контент*/
</div>
<?php endwhile; endif; wp_reset_query();?>
</div>
<div class="posts-column">
<?php
query_posts("category_name=cat2&posts_per_page=3");
if(have_posts()):while(have_posts()):the_post();
?>
<div class="post-item">
/*контент*/
</div>
<?php endwhile; endif; wp_reset_query();?>
</div>
<div class="posts-column">
<?php
query_posts("category_name=cat3&posts_per_page=3");
if(have_posts()):while(have_posts()):the_post();
?>
<div class="post-item">
/*контент*/
</div>
<?php endwhile; endif; wp_reset_query();?>
</div>
</div>
По началу, можно смотреть, в какой из них минимальное количество постов, и в остальных выводить столько же, чтобы покрасивше было.