Get all custom post types excepted some…

Following code generates the array to use as argument.

<?php
// Excluded CPTs. You can expand the list.
$exclude_cpts = array(
    'portfolio'
);
// Builtin types needed.
$builtin = array(
    'post',
    'page',
    'attachment'
);
// All CPTs.
$cpts = get_post_types( array(
    'public'   => true,
    '_builtin' => false
) );
// remove Excluded CPTs from All CPTs.
foreach($exclude_cpts as $exclude_cpt)
    unset($cpts[$exclude_cpt]);
// Merge Builtin types and 'important' CPTs to resulting array to use as argument.
$post_types = array_merge($builtin, $cpts);

My suggestion is to use WP_Query instead of query_posts. See When should you use WP_Query vs query_posts() vs get_posts()?.