Equality comparison doesn't work with NULLs:
alter table TestTable add constraint X check
(
(Col1 is null and Col2 is null and Col3 is null and Col4 is null) or
(
Col1 is not null and
(
(Col2 is not null and Col3 is null and Col4 is null) or
(Col2 is null and Col3 is not null and Col4 is null) or
(Col2 is null and Col3 is null and (Col4 is not null and Col4 = 1))
)
)
)