If you submit a transaction to the network and it hasn't yet be confirmed by a block, is it possible to cancel this transaction?
The probability is very low.
If all inputs of your transaction are confirmed, your transaction has enough fees and your client is well connected to a network - the transaction will be mined in next block and you can do nothing.
But sometimes it is possible.
For example, you created transaction with fee=0.00001000 and low bitcoin-days priority
All miners running 0.8.x client would reject it as "free/not enough fee" transaction
But miners on 0.9.x client will accept it to their memory memory pool.
So, your luck will depend of "Who will mine the next block?"
You can try to double-spend your utxos with higher fees and hope that the next block would be found by 0.8.x miners