Perhaps Bjarne Stroustrup believed (believes?) that it would be common to set some other pointer equal to the this pointer. I could see where this would make sense in a linked list (say somewhere: head = this;). If this were a reference, you would have to take the address of it with the ampersand operator. Since references are declared with type&, taking the address of a reference just seems unnatural. People are quite accustomed to dereferencing pointers though.

Update: Mon Feb 12 2003

In light of the writeups by swmcd and DrPizza, I realize that my argument is not the reason that this was originally a pointer. However, I still believe it's a valid argument for why (in addition to backwards compatibility and other reasons) it remains a pointer. Taking the address of a reference is just contrary to the idea behind references. If I didn't think so, I would've requested this writeup be removed.