I can tell you that we use very similar port configuration and setup code on windows mobile devices with hardware handshaking and polling (don't use DataReceived event) and it has been solid as a rock.
Update on this issue in case someone else runs into it. After extensive digging, we have found that the error is a hardware issue with our MDT's serial connections on it's development box. We have connected the GPS / GSM device to the MDT via serial /
USB adapters, and it has been working just fine.
PROTIP: When serial development isn't going as planned, check for hardware issues.