You might find this article helpful:
Unpivot a Table Using Cross Apply[/url]
I'm pretty sure I asked a question like this a while back, and the trick is to use dynamic SQL to grab a list of column names to unpivot, so that you get groups like this:
CROSS APPLY (VALUES (Question1, Answer1),
(Question2, Answer2),
(Question3, Answer3),
(Question4, Answer4),
(Question5, Answer5))
CrossApplied (Question, Answer)
After searching for a second, found this by Aaron Bertrand: Use SQL Server's UNPIVOT operator to dynamically normalize output[/url]