My application using below methods to detect roamming in iOS 4 and 5.
NSString *carrierPListSymLinkPath = @\"/var/mobile/Library/Preferences/com.apple.carri
Facing the same problem here since iOS6 beta 1, since that version /var/mobile/Library/Preferences/com.apple.operator.plist sym-link is no more reversable.
No other device-only way are public now, in the meanwhile the unique solution is to check for the ip via geo-ip, as Trausti Thor said, or checking for the ip class if you are developing an app for a single carrier.