Is there any way to hide a transaction on the Ethereum blockchain?
Some blockchain have protocols that implement this by default, like Monero and Zcash. Is something similar possible on Ethereum?
All information on the blockchain is visible to all participants.
Having said that, some clever uses of encrypted data exist for specific use cases. zkSnarks may provide general-purpose obfuscation in the future.
There's ring mixing contract with source code here which has similar (in fact, flipped) properties to Monero's ring signature mixes.
It offers anonymity to recipients rather than senders, meaning that if you use it to make payments (as in, you deposit a public key and the intended recipient has the corresponding private key with which to withdraw), even you, the sender, cannot determine which of the withdrawal addresses corresponds to your recipient (cool right)
There's some work going to get zCash running on ethereum here: https://z.cash/blog/zksnarks-in-ethereum.html.
It seems like the ideas is: you would probably have an initial, traceable contract; but other's can then use this to preform untraceable transactions with it.