You seem to be using 2 separate queries there, the first (query_posts) won’t do anything, and the second is the query that will be used. Have you tried:
$args=array(
'category__in' => $cats,
'post_type' => 'profiles',
'posts_per_page' => 10,
'order'=> 'ASC',
'orderby' => 'title'
);
$loop= null;
$loop = new WP_Query($args);
Try that instead of:
query_posts(array( 'category__and' => $cats ));
and
<?php $loop = new WP_Query( array( 'post_type' => 'profiles', 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' ) ); ?>