Originally described here by Bart Duncan: http://bartduncansql.wordpress.com/2011/03/03/dont-depend-on-expression-short-circuiting-in-t-sql-not-even-with-case/
The statements in the "steps to reproduce" section create an ITVF and try to select a value out of it, passing zero as argument.
The SELECT statement fails at compile time, due to the evaluation of the ELSE branch of the CASE expression.
Books Online seems to guarantee that short-circuiting applies to CASE expressions:
Quoting http://msdn.microsoft.com/en-us/library/ms181765.aspx :
"Evaluates, in the order specified, Boolean_expression for each WHEN clause.
Returns result_expression of the first Boolean_expression that evaluates to TRUE.
If no Boolean_expression evaluates to TRUE, the Database Engine returns the else_result_expression if an ELSE clause is specified, or a NULL value if no ELSE clause is specified."
Reproduced also on SQL Server 2005 SP3 and SQL Server 2008 SP2.