Try this:
UInt32 category = kAudioSessionCategory_PlayAndRecord;
status |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
UInt32 allowMixing = true;
status |= AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, // 1
sizeof(allowMixing), // 2
&allowMixing); // 3
status |= AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, // 1
sizeof(allowMixing), // 2
&allowMixing); // 3
The final two AudioSessionSetProperty
calls are new in the 3.0 OS. These enable me to play sounds as well as vibrate during recording.