I've seen something like that on anti-virus.
Panda antivirus updates itself, but you need to have a registered user and password to access the updates.
Maybe something like that would be the best option.
The demo must be completely limited. Not by serial, just limited, so there's no way to get all fishes, as they are not there, not just disabled.
Then, when an user purchases the aquarium he'll receive a serial, and a username (maybe his own email?)
the same info should appear on a database on the server, and whenever that person decides to download it, both user (email) and password(serial) must match, and then he could download it.
This will make useless any keygen, as if the serial isn't registered, or the email doesn't match the serial, the program can't be downloaded.
I think this is one of the best ways to stop pirating the software. You won't see any serial for panda antivirus out there, and if you find one, you'll have an antivirus that will never update, so it will be useless in a couple of months.
My 2 cents
.:: AMD Athlon XP 1700+ :: 512MB SDRAM :: Windows XP SP1 :: shappire ATI radeon 9600 PRO :: Soundblaster Live Player 5.1 :: Directx 9.0 :: (Always latest drivers for everything) ::.