CustomCalloutMapView is a project mainly written in OBJECTIVE-C and C++, it's free.
Example code for creating a custom callout bubble in a MapKit on iPhoneOS 3.0, 3.1, 3.2 and 4.0
Problems