You can do this in iOS 5 with the properties:
kAudioSessionProperty_InputSource
kAudioSessionProperty_OutputDestination
For the possible values (what sources \ destinations are available on the device) use AudioSessionGetProperty with the properties:
kAudioSessionProperty_InputSources
kAudioSessionProperty_OutputDestinations
For iOS 3.1+, I assume you're using the PlayAndRecord audio session category - you might want to try setting kAudioSessionProperty_OverrideCategoryDefaultToSpeaker to true. For instance,
UInt32 defaultToSpeaker = 1;
status = AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof (defaultToSpeaker),
&defaultToSpeaker
);
Might not be exactly what you're looking for, but I don't think you can come closer in < iOS 5.