I think the classes that are generated using the DbContext Generator will only use "lazy loading proxies" and not "change tracking proxies" (note there are two types of proxies) as is described at http://blogs.msdn.com/b/adonet/archive/2009/12/22/poco-proxies-part-1.aspx. As you pointed out, all the mapped properties have to be virtual for change tracking proxies to work. This isn't required for just lazy loading proxies (where only the navigation properties have to be virtual).
I think Microsoft should change this in the T4 template because without change tracking proxies, it's a lot slower. Especially if you have a lot of entities in the object context.
I was able to confirm this. In the book Programming Entity Framework: DbContext, on page 66 it talks about this. You can use code similar to the following to verify that an object is using a change tracking proxy.
Person p = context.People.Find(123);
bool b = p is IEntityWithChangeTracker;
I'm surprised that the T4 template doesn't make all the properties virtual by default. It seems like a strange oversight unless there is a reason that they did it intentionally for some reason.