1. Network issues. OTPs are time sensitive... The Google Authenticator codes are only valid for 30 seconds. If there are network issues, the code may have expired by the time that TrustedCoin attempts to validate it.
2. Authenticator out of sync. Again, because GAuth OTP codes are time sensitive, if the time on your device is out of sync with the Google servers, it's possible that the 30sec window is actually shorter and you're just missing it every now and then.
The GAuth app you use should provide a "sync" option... For example, if you use "Google Authenticator" app, you can follow the instructions from Poloniex here to try and resync your device: https://poloniex.freshdesk.com/support/solutions/articles/1000227645-my-two-factor-codes-aren-t-working-incorrect-code-errors-
Personally, I use "Authenticator Plus" and it has a "Sync with Google" option in "Settings -> Other".
3. TrustedCoin are having technical issues. Try contacting them if syncing your app doesn't help. They have a contact form here: https://api.trustedcoin.com/#/contact-us
4. If you have a LOT of inputs from a LOT of different addresses, it's possible that the time it takes to sign the transaction is longer than the validity period of the OTP... So by the time Electrum has signed the transaction and transmitted to TrustedCoin, the OTP flags as invalid.
You'd need to preview the transaction and see how many inputs are being used for the transaction when it fails.
The only way I can think of getting around this would be to temporarily restore a "2fa disabled" version of the wallet, so you can self-sign without 2FA... Send ALL your coins back to yourself to consolidate all the inputs into one UTXO and then delete that "2fa-disabled" wallet and go back to using the original 2fa one.