Can a transaction take 2 days?
For it to confirm? Yes. It can take much longer than that if you don't include a sufficient transaction fee.
I send bitcoins somewhere almost two days ago and they still haven't arrived.
Any ideas whats happening.
You probably used a wallet that didn't fore you to use a high enough transaction fee.
Any way of cancelling and getting it back?
You could try importing the private key into some other wallet and creating a replacement transaction with a higher fee.