With static data this will get your output table
WITH prep AS (
SELECT Product + ' Unit' TYPE, Unit Value
FROM utilities
UNION ALL
SELECT Product + ' BaseUnit' TYPE, BaseUnit Value
FROM utilities
)
SELECT [Gas Unit], [Gas BaseUnit]
, [Oil Unit], [Oil BaseUnit]
, [Water Unit], [Water BaseUnit]
FROM (SELECT TYPE, Value
FROM prep
) a
PIVOT
(MAX(Value)
FOR TYPE IN ([Gas Unit], [Gas BaseUnit]
, [Oil Unit], [Oil BaseUnit]
, [Water Unit], [Water BaseUnit])
) pvt
Demo: SQLFiddle
With dynamic data you'll need to use a dynamic query to create the PIVOT columns list