I think that Mattymayn is on to something.
I think that when the voicemail tries to transfer the call to the 800 number its trying to also pass the caller id of the inbound call, back out, to the 800 number. The PRI that 800 calls are routed out, is rejecting the use of a non-native CLID, and then because the transfer was cancelled, the voicemail drops the call back at the top most level.
Try this. From your cell phone, call your desk phone. Answer on your deskphone, and then transfer the call to the speed dial. Does the transfer complete?