From way back in July 2000, Matt Pritchard writes in Gamasutra about online game cheating from his experience with Age of Empires. The article is a helpful summary but something about it seems incomplete. Maybe it's that most of his proposed remedies are really just variants of security through obscurity, yet he himself says Rule #5: Obscurity is not security.
The only real fix is his Rule #8: Trust in the server is everything in a client-server game. He left out the corollary: only build client/server games and make sure the server is a trusted computer.
Even then it's not going to be perfect, as noted here with the cheats in Diablo II. Unless the server is perfect the hackers will find server bugs to make bad things happen. The whole problem is fascinating. It reduces to the same problem of distributed systems consistency in the face of Byzantine failure. Or copy protection, or DRM. This is what Microsoft's Palladium is all about.