Is there a way to play rock, paper and scissors fairly over internet chat? By this, I mean that both players cannot play their hands simultaneously, one of them has to go first and the second player should have no way of cheating.
One possibility is to use complexity to buy time. Encrypt messages and send messages before the codes can be reasonably broken. Exchange keys afterwards as described by Asaf below (and what I originally wrote here somewhat messily).
This is pretty inelegant and kind of vague but I am not sure one can do better...
Each player encrypts their move, and keys are exchanged only after both moves have been played.
If you set a time window in which the exchange happens, and you use sufficiently secure keys and ciphers this will ensure no cheating was involved.
Another option IA using a trusted third party to hold the moves. Why should you trust them is a whole other thing, though.