Can't seem to understand why STUFF isn't working
The problem is that you are missing a way to tie the outer table to the data inside of the STUFF. You can do this by adding a WHERE clause to the subquery:

SELECT x.SurveyQuestionID, 
  PossibleAnswers 
    = STUFF((
              SELECT ', ' + Answer 
              FROM SurveyQuestionPossibleAnswer sqpa
              INNER JOIN SurveyQuestion sq
                ON sq.SurveyQuestionID = sqpa.SurveyQuestionID
              WHERE x.SurveyQuestionID = sq.SurveyQuestionID
              FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')   
FROM SurveyQuestionPossibleAnswer AS x
GROUP BY x.SurveyQuestionID;


See SQL Fiddle with Demo. Or to shorten the code, you could even rewrite the query to:

SELECT x.SurveyQuestionID, 
  PossibleAnswers 
    = STUFF((
              SELECT ', ' + Answer 
              FROM SurveyQuestionPossibleAnswer sqpa
              WHERE x.SurveyQuestionID = sqpa.SurveyQuestionID
              FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')   
FROM SurveyQuestion AS x
GROUP BY x.SurveyQuestionID;


See SQL Fiddle with Demo. Both will give you the same result.