Getting the visual voicemail to work can be tricky. It usually means you have to call your provider, in my case Swisscom, and ask them to convert your combox to a Visual Voicemail combox.
Once this hurle is taken, and you can access your VoiceMail, you still need to setup your iPhone to actually forward call to the voicemail. Again tricky. There is afaik no graphical user interface to this. You have to use the GSM codes.
Here is the cheat-sheet from Swisscom:

Didn't get that? Let me run you through an example:
- Click on "Phone" on your iPhone
- Click "Keypad"
- Enter the following number **61*+4186xxxxxxxxxx# (replace xxxxxxxxxx with your mobile phone number. e.g. 0791234567
- Click on "Call"
- You will get a large status message back, telling you what services (voice, data etc.) will be forwared if are not answering.
Now you can test it. Call your number from another phone, don't answer for 20 seconds, and the caller should get your voicemail.
To see the current status, call *#61#
To disable the forwarding, call #61#
To re-enable the forwarding to the same voicemail, call *61#
To disable the forwaring, and forget the number, call ##61#
Now you can repeat the exact same thing for "On Busy" or "Off/Unreachable". Just replace 61 with 62 or 67.
This works for Swisscom, but since these are standard GSM codes, it should work for any GSM service.
Btw: If you've setup the "Busy" forwarding, then if you get a call, and don't want to answer it right now, just click on the red "Decline" button on your iPhone. The caller will then get the chance to leave a message on your voicemail.
Enjoy.