Usually the process of transferring a domain is simple, but there can be some restrictions on gTLD domains which you should be aware of.
Domain is less than 60 days old:
If the domain you're trying to transfer was registered less than 60 days ago it is likely that it won't be possible to transfer until the 60 day period is over.
This is due to ICANN policy and is designed to try and avoid certain types of domain registration abuse.
Domain was transferred less than 60 days ago:
A Domain cannot be Transferred to another Registrar within 60 days of a previous Transfer.
For example, a Domain Name cannot be Transferred from Registrar B to Registrar C, if it has been Transferred to Registrar B from Registrar A within the last 60 days.
An exception to this rule is the Transfer back to the previous Registrar in cases where both Registrars so agree and/or where a decision in the dispute resolution process so directs.
This is part of ICANN policy and is designed to protect registrants from nefarious activity like domain hijacking.
Domain is locked with the current registrar:
There's a few types of domain lock, but usually it's simply a transfer lock which you can enable/disable to help keep your domain secured. If a transfer lock is enabled on your domain then it will prohibit the transfer.
To transfer the domain you will need to ensure it's unlocked with your current registrar.
Domain isn't in a transferable state (Redemption):
If your domain isn't in a transferable state, such as it's entered Redemption, or worse PendingDelete then there is usually no way to transfer the domain and instead you will need to Restore the domain before it's transferable.