Isn't it as simple as:
SELECT
*
FROM #Students AS s
WHERE
s.[Year] = 2009
AND NOT EXISTS
(
SELECT *
FROM #Students AS s2
WHERE
s2.StudentID = s2.StudentID
AND s2.Programme = s.Programme
AND s2.[Year] = s.[Year] - 1
);
Paul White
SQLPerformance.com
SQLkiwi blog
@SQL_Kiwi