SIP attended transfers are indistinguishable from second line outgoing calls when the dialplan is running. For features transfers and SIP blind transfers, you might be able use various dialplan functions to look for hints in the SIP headers and channel variables.
There may be some channel variable set when a SIP attended transfer completes, but that would not be available for the actual call, until complete, unless you looked at it from, say, AMI. AMI should see events that may give a clue.
Why do you need to distinguish?