Assuming no nulls, you GROUP BY the unique columns, and SELECT the MIN (or MAX) RowId as the row to keep. Then, just delete everything that didn't have a row id:
DELETE MyTable FROM MyTable LEFT OUTER JOIN ( SELECT MIN(RowId) as RowId, Col1, Col2, Col3 FROM MyTable GROUP BY Col1, Col2, Col3 ) as KeepRows ON MyTable.RowId = KeepRows.RowId WHERE KeepRows.RowId IS NULL
Use
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))
instead of MIN(RowId) if you have a GUID instead of an integer
http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows