If I understand the description correctly, you could use CASE in the where clause, like
...
WHERE date1 <= CASE WHEN ...
AND date2 >= CASE WHEN ...
...
But since you just want the first non null value from different fields, I believe using
COALESCE (Transact-SQL)[
^] would be easier, something like
SELECT COALESCE(UpdatedDate, InsertedDate, VisitedDate)
FROM tbl_UserTracking
WHERE COALESCE(UpdatedDate, InsertedDate, VisitedDate) BETWEEN date1 AND date2