Is this Agent/Actor implementation issue free?
Few minor points:


Generic type parameter should be called &lt;T&gt; as per convention.
public constructors in abstract classes make no sense - make it
protected.
Make thread and messageQueue readonly and don't
set them to null in the Dispose() method.
Better yet, implement the Disposable Pattern correctly. Though note, I do disagree with their setting of the IDisposable members to null. It's really not necessary at all; but calling Dispose() is. Their _disposed class member conveys enough information necessary.
You should also lock on a dedicated locking class member when accessing your quit class member since it is accessed via multiple threads.
Possibly wrap your call to ProcessMessage(message) in a try..catch block with appropriate error handling (or not, as the case could be). Unless, of course, you trust any subclasses from doing nasty things in their override of it.


Just my initial thoughts. Hope they help.