How to hide all child pages with post_query?

There is a parameter in WP_Query called post_parent. Normally this refers to the ID of the post’s parent, but since its an integer field, pages without a parent have in essence a post_parent of 0.

So, to get all pages that are not child pages of another page, you could use

query_posts( 'post_type=page&post_parent=0' );

or, in array syntax that would be

query_posts( array( 
    'post_type' => 'page',
    'post_parent' => 0 ) );