Funny, I presented this as a possible solution at SQLTeach.
This is close to the best solution that I've seen to date. The one thing to watch for is that in order to get the last 10 rows of the table, you have to get the entire table and you're right about SQL Server not allowing a parameterized TOP clause. This means that you have to use Dynamic SQL and probably some logic to switch things around once you've passed the mid-point of the table.
-Mike