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.