Transferring is one of the basic (I'd say so coming from an enterprise telephony background) functions, yet unfortunately it's not part of the core SIP spec but is defined in an
external RFC and it appears that different devices have different implementations - so it might be a conflict between the PBX and the devices you're using, and in case the problem arises when you have an external call coming in via VoIP, your IPTSP might also be part of the problem. Especially for external calls, I've found to get a lot more reliable results when I proxy the media in my PBX (so the audio always passes through my PBX.. that has the additional advantage that my QoS rule for the PBX also applies to every incoming and outgoing call and I don't have to add additional rules for each phone (my router doesn't support 802.1q and DSCP) - then the media flow between IPTSP and my PBX remains in place when I transfer the call around between my various phones.