Tente algo como:
where (X.Name <> 'xxx' or X.Name is null)
and (XY.Product <> 1 or XY.Product is null)
Uma vez que, por definição
NULL
é um valor desconhecido (um pouco simplificado, mas OK para esta explicação), ele não será igual ou não igual a um determinado valor - é por isso que o IS NULL
é necessário aqui.