Say name of a caller on iPhone

Solution 1:

By default, no.

But it wouldn't be that hard to record the name (or perhaps using the voices in VoiceOver Utility to speak them), turn that into a ringtone, and then apply it to the specific contacts you have via the Address Book as a custom ringtone.

It's a bit of legwork, but it's a clean way of doing it and won't require any outside software or hacking of the device.

Solution 2:

I know you said Preferably without jailbreak, but if you do there are a few solutions:

CallTell - Announces who's calling before ringing. Text support too.

iAnnounce - Announces incoming calls. iOS4

I personally use CallTell and would happily recommend it.