The iPhone supports ringtone of up to 30 seconds, but most networks will divert to voicemail before you gets a chance to hear the full ringtone.
The way around this is to instruct your network to increase the delay before a caller is sent to voicemail:
- Via the Phone app, enter *#61# and press Call.
- Write down the message that appears after “Forwards to”. This is your voicemail access number.
- Now dial **61*xxx*11*y# (where xxx is your voicemail access number and y is the number of seconds before the call should be sent to voicemail – this must be a multiple of 5 seconds) and press Call.
I have tested this tip on an iPhone 3GS on Orange and an iPhone 4 on O2, but it should work on all phones and networks as it’s a standard GSM feature.