You can use the UNPIVOT function to get the final result:
select value
from yourtable
unpivot
(
value
for col in (I1, I2, I3)
) un
order by id, col;
Since you are using SQL Server 2008+, then you can also use CROSS APPLY with the VALUES clause to unpivot the columns:
select value
from yourtable
cross apply
(
values
('I1', I1),
('I2', I2),
('I3', I3)
) c(col, value)
where value is not null
order by id, col