This code should produce the proper $meta_query array:
if ($_POST['achternaam'] != '') { $this->input_name = $_POST['achternaam']; }
if ($_POST['provincie'] != '' && $_POST['provincie'] != 'Alle provincies') { $meta_query[] = array('key' => 'provincie', 'value' => $_POST['provincie'], 'compare' => 'LIKE'); }
if ($_POST['modaliteit'] != '') { $meta_query[] = array('key' => 'modality', 'value' => $_POST['modaliteit'], 'compare' => 'LIKE'); }
if ($_POST['plaats'] != '') {
$meta_query['relation'] = 'OR';
$meta_query[] = array('key' => 'city', 'value' => $_POST['plaats'], 'compare' => 'LIKE');
$meta_query[] = array('key' => 'city2', 'value' => $_POST['plaats'], 'compare' => 'LIKE');
}
$args = array(
'role' => 'therapeut',
'posts_per_page' => 1000,
'exclude' => array(1),
'meta_query' => $meta_query
);
However, I think it will produce unexpected results if both 'plaats' and 'modaliteit' are present. The 'OR' condition will apply to all three keys, not just the two 'city' keys. There is currently no way to have the conditional apply to just a subset of the keys.
Of course, this may not be a problem unless 'modaliteit' is required along with one of the two city keys.