The ideal way is
lag(ignore nulls), but SQL Server doesn't support that. Instead, you can use two levels of window functions:
select max(name) over (partition by name_rowid) as new_name from (select t.*, max(case when name is not null then rowid end) over (order by rowid) as name_rowid from billtrans t ) t;
The above works in SQL Server 2012+. In SQL Server 2008, you can use much less efficient methods, such as
select t.*, t2.name as new_name from billtrans t outer apply (select top 1 t2 from billtrans t2 where t2.rowid <= t.rowid and t2.name is not null order by t2.rowid desc ) t2;
You can also phrase this using a similarly structured correlated subquery.