The first sentence of the MSDN documentation answers your question:
The virtual keyword is used to modify a method, property, indexer or event declaration, and allow it to be overridden in a derived class.
http://msdn.microsoft.com/en-us/library/9fkccyh4(v=vs.80).aspx