Select Case when (date_1 < date_2 and date_1< date_3) then date_1 when (date_2< date_1 and date_2< date_3) then date_2 when (date_3< date_1 and date_3< date_2) then date_3 end as min_date from #temp1 where date_1 is not NULL and date_2 is not NULL and date_3 is NOT NULL

Use ISNULL or COALESCE with a large value out in the future like shown below:

Select Case
when (COALESCE(date_1,'20990101') < COALESCE(date_2,'20990101')
and COALESCE(date_1,'20990101')< COALESCE(date_3,'20990101')) then date_1
when (COALESCE(date_2,'20990101')< COALESCE(date_1,'20990101')
and COALESCE(date_2,'20990101')< COALESCE(date_3,'20990101')) then date_2
when (COALESCE(date_3,'20990101')< COALESCE(date_1,'20990101')
and COALESCE(date_3,'20990101')< COALESCE(date_2,'20990101')) then date_3
end as min_date
from #temp1