Here’s how I did it:
function ignore_country($conditions, $args){
global $wpdb;
$country = $args['country'][0];
if($country && is_string($country) ){
$sql = $wpdb->prepare("select event_id from web_em_events where location_id in (select location_id from web_em_locations where location_country = '%s')", $country);
$conditions['country'] = "event_id NOT IN ($sql)";
}
return $conditions;
}
// The country in this case is a negative selector, as that's the point of the filter.
$args = array('country' => $country, 'limit' => $num - $selected, 'orderby' => 'event_start_date, event_time');
add_filter( 'em_events_build_sql_conditions', 'ignore_country',1,2);
$events = EM_events::get($args);
remove_filter( 'em_events_build_sql_conditions', 'ignore_country',1,2);
Note that the country argument being passed in to the filter is an array, so you could exclude multiple countries if you wanted to.