Por lo pronto, intenta separar las condiciones del where, porque realmente tienes dos principales: por un lado, los idiomas, que sea cualquiera de ellos, y por otro lado, las demás, que han de darse todas obligatoriamente. Yo para comparar campos de texto suelo usar la cláusula LIKE, pero = ha de funcionar. Prueba así:
Código PHP:
$sql = 'SELECT * FROM Datos WHERE ((Idioma1 LIKE \'' .$idioma. '\') OR (Idioma2 LIKE \'' .$idioma. '\') OR (Idioma3 LIKE \'' .$idioma. '\')) AND ((Traductor LIKE \'' .$traductor. '\') AND (Interprete LIKE \'' .$interprete. '\') AND (Autonomo LIKE \'' .$autonomo. '\'))';
Otra cosa importante son los combos; ten en cuenta que lo que se pasa por POST/GET es el value del <option> y ese valor debe estar en la base de datos en el campo correspondiente. Me explico; dices que muestras Sí/No, pero, ¿es también Sí/No los valores que envía? Prueba a tener en la base de datos 0/1 y ese es el valor que comparas:
Código HTML:
<select name="traductor">
<option value="0">No</option>
<option value="1">Sí</option>
</select>
Ten cuidado con las comillas y comillas simples, ya que con cada una hay que "escapar" distintos caracteres; hacer un "echo" de la consulta para ver si es correcta puede serte útil. Echa un ojo y nos cuentas ;)