Write a program that always outputs "2012" - even if it's modified!
C, 53 characters
main(){register*a=&quot;2012&quot;;(puts(&quot;2012&quot;==a?a:&quot;2012&quot;));}

A bit longer than the scripting language answers, and follows the same basic principle. Relies on the fact that due to the constraints of C's syntax, the only letters that would be possible to change without making the program invalid are within the strings!
Edit: Shaved off 4 characters.
Reedit: Robustness increased, shaved off one character.
Re-redit: Longer, but more robust. Just try your &amp; now! (Correctly this time).
Update: Shortened a bit; defeats most approaches seen so far.
Update: Changed int to void; should defeat the last possible approach to break it I can think of.
Update: I thunk of another approach; replacing the last a (may it rot) with 0; using two-letter names should deal with that problem.
Update: Last update revoked; assuming changes causing runtime errors are disallowed; a will work just fine.
Update: Backtracking some more; attempting to dereference *a will also segfault; so using void to tease a compile error out of it should not be necessary.
Update: And a final shortening; that relies on the string &quot;2012&quot; being placed at but one address (which is common); and that literal strings are read-only (also common).
Update: It cost me two characters, but I defeated your puny semi-colon!