Finalmente lo encontré - Después de inicializar el objeto Audio Session , - AudioSessionInitialize(): puede realizar una llamada a AudioSessionGetProperty y obtener el valor de kAudioSessionProperty_AudioInputAvailable.
AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 propertySize, micConnected;
AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected);
[self updateMicStatus:micConnected]; // user-created method
De acuerdo con la documentación para Audio sesión de servicios, esto se debe utilizar en lugar de utilizar el modelo de dispositivo (iPhone vs iPod Touch) para determinar si una entrada de audio está disponible para su uso. También puede configurar una función de devolución de llamada para controlar los cambios en esta propiedad a través de AudioSessionAddPropertyListener().
No estoy seguro todavía si esta propiedad también se aplica a dispositivos conectados a través del conector Dock, pero parece que funciona para la toma de auriculares.
Por alguna razón, esto no funciona para mí. En un iPod Touch 2nd generation sin auriculares conectados, devuelve TRUE ... – Dimitris