This was easier for me to picture with an example. This works, but I am not sure if I have overcomplicated it.
CREATE TABLE #Dates( ID int, date1 datetime, date2 datetime, date3 datetime, date4 datetime )
INSERT INTO #Dates VALUES( 1, '1 Jan 2008', '2 Feb 2979', '8 Nov 1967', '31 Dec 2001' )
INSERT INTO #Dates VALUES( 2, '1 Jan 2008', '1 Jan 2008', '1 Jan 2008', '1 Jan 2008' )
INSERT INTO #Dates VALUES( 3, '1 Jan 2008', '1 Jan 2008', '1 Jan 2008', '31 Jan 2008' )
INSERT INTO #Dates VALUES( 4, '1 Jan 2008', '1 Jan 2008', '31 Jan 2008', '1 Jan 2008' )
-- look at example data - note only row 2 has all 4 dates the same
SELECT * FROM #Dates
-- return rows where the dates are not all the same
SELECT ID as RowsWithDatesNotAllTheSame
FROM
(
SELECT ID, Date
FROM
(
SELECT ID, DateCol, Date
FROM
(SELECT ID, date1, date2, date3, date4
FROM #Dates) p
UNPIVOT
( Date FOR DateCol IN
(date1, date2, date3, date4)
) AS unpvt
) x
GROUP BY ID, Date
) y
GROUP BY ID
HAVING count(*) > 1