Il problema mi sa che è a monte. Devi decidere a priori che tipo di ricerca vuoi effettuare.

Se è sufficiente che una sola delle condizioni sia vere usi or

select * from contatti where a = -1 or b= -1 or c = -1

(in access il campo "checkato" non viene identificato con 1 ma col -1)

Se invece le condizioni devono essere TUTTE CONTEMPORANEAMENTE vere allora usi and.

select * from contatti where a = -1 and b= -1 and c = -1


In sintesi, anche nel caso volessi costruire dinamicamente la tua query, devi decidere prima cosa deve essere restituito in base alle scelte dell'utente.

Nessuno ti vieta di mettere eventualmente anche un radio button con due opzioni, del tipo "TUTTE" o "ALMENO UNA", e a seconda di tale opzione, generi la query di conseguenza con gli and oppure con gli or.