Is it possible to install a key-logger on a machine over the internet without the recipient knowing? Then retrieving that information at a later date?

How would this be done and how would you find out if it is done to your machine?