Sorting posts by Multiple custom fields in defined order

You can use FIELD or FIND_IN_SET:

return "FIELD(mt1.meta_value, 'Head Teacher', 'Deputy', 'Teacher', 'Support', 'Clerical') ASC, mt2.meta_value ASC";

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_field