After looking into use of CROSS & OUTER APPLY (my curiosity was influenced by Paul White NZ who suggested more efficient solution for one of the last topics...)
I can suggest the following query (it will return record for every price change occurance):
select bs.Name, bs.Price as StartPrice, bs.Date as StartDT, etp.NextPrice, etp.EndDT
from #Temp bs
outer apply (select top 1 et.Name
,et.Price as NextPrice
,et.Date as EndDt
from #Temp et where et.Name = bs.Name and et.Date > bs.Date
) etp
where bs.Price != etp.NextPrice or etp.NextPrice is null
order by bs.Name, bs.Date
I've started to like APPLY thing, thanks to Paul White NZ!