Some more details from MSDN:
The prefix "@" enables the use of
keywords as identifiers, which is
useful when interfacing with other
programming languages. The character @
is not actually part of the
identifier, so the identifier might be
seen in other languages as a normal
identifier, without the prefix. An
identifier with an @ prefix is called
a verbatim identifier. Use of the @
prefix for identifiers that are not
keywords is permitted, but strongly
discouraged as a matter of style.
from C# Language Specification: 2.4.2 Identifiers.
Prefixing with '@' therefore allows e.g. to derive from a class named "delegate" which might be defined in a library written in another language than C#.
In any other case I would not recommend to use this syntax and rather make up identifiers different from the C# keywords (e.g. valu instead of value) to increase code readability and avoid confusion whether there is any special meaning attached to it.
There is also another interesting fact about variable naming mentioned there:
Identifiers containing two consecutive
underscore characters (U+005F) are
reserved for use by the
implementation. For example, an
implementation might provide extended
keywords that begin with two
underscores.