There is no reason for keeping packages for dead projects, and if upstream does not create commit for more than n years the project is likely to be dead. However what n should be is debatable.
I respectfully disagree. The upstream activity does not determine downstream use. Even if a project is dead it can still be used by many users. This is especially true for small programs and scripts where development stops simply because there's nothing left to develop. Having a separate "package state" field would be helpful for users, but in my opinion the removal of packages should be handled on a case by case basis.
Deciding to keep or remove a package is (partially) dependant on whether or not people actually use that package. This is somewhat solved for the official packages by pkgstats, which "sends a list of installed packages to the Arch Linux project". I see no reason (and I can't find any online) why a system like this couldn't be implemented in the AUR.
I also think that we should have automated rules for aur that help to remove bogus/dead-upstream/copyright-violating packages.
Isn't that what TU's are for? I don't think it is easy (if possible at all) to automatically determine whether or not a package is bogus/violating copyright.