The trouble is the names you have assigned each checkbox, what is happening currently is the first checkbox is being read by the PHP and its value assigned to the variable, the next filter checkbox is being read but then overwriting the currently assigned value of the variable, and then again with the 3rd checkbox. So you'll always only ever get the last ticked checkbox as your value for the $filter variable.
You need to individually assigned each checkbox with a different name for example:
<form action="search.php">
<input type="text" name="term" />
<input type="checkbox" name="filter1" value="subject" /> Subject
<input type="checkbox" name="filter2" value="course" /> Course
<input type="checkbox" name="filter3" value="professor" /> Professor
<input type="submit" name="submit" value="Go" />
Then the PHP:
<?php
$term = $_GET['term'];
$filter1 = $_GET['filter1'];
$filter2 = $_GET['filter2'];
$filter3 = $_GET['filter3'];
echo "$term $filter1 $filter2 $filter3";
?>
You also had your last checkbox's value the same as the second so I changed the value from course to professor, if this is in fact wrong, you can obviously change it back.
Another note, it may also be a good idea to use the method POST instead of GET as it's more secure, however, you may have reasons to be using GET, but it's just a heads up :)