there are attributes in .NET (e.g. ObsoleteAttribute) which are able to prevent compilation or at least throw compile time warnings depending on their configuration.
Using PostSharp: Generating a custom compile time warning C#
Obsolete
attribute is "compiler magic" - you can't do something like this on your own without modifying the compiler. However, as always, there are workarounds - e.g. take a look at this and this thread.
Any attributes that exhibit this inside the compiler are special cases. The [Obsolete]
behaviour is described in the C# spec (17.4.3), for example.
You could write a custom FxCop rule?