Lo que quieres evitar es el WHERE AND que da error, si he entendido bien. SE podria hacer con una variable filtro y ir comprobando si es vacia, si es vacia no añades el AND, si hay algo le añades el AND al filtro, aunque la solución que suelo utilizar para no recargar tanto el codigo es:
Código PHP:
$SQL = "SELECT * FROM usuarios WHERE (1=1)";
if (!empty($nom)) $SQL.=" AND nom LIKE '%$nom%'";
if (!empty($nom)) $SQL.=" AND cognoms LIKE '%$cognoms%'";
.....
Adeu