Querying a query

// store the IDs of the posts we've already displayed to prevent duplicates
$used_ids = array();

$highlights_posts = request_highlights($slides_id);
foreach( $highlights_posts as $post ) {
    setup_postdata($post);

    // check if we've already done this post
    if(in_array($post->ID,$used_ids)){
        // skip to the next one
        continue;
    }
    // we haven't done this post before, add it's ID to the list
    $used_ids[] = $post->ID;
    // do stuff e.g. the_title(); etc
}
wp_reset_postdata();

edit: Having seen your code would it not make more sense to put the category ID in the function or as a parameter instead of doing 'category' => null ? It would save you from doing the if statements and the category loop