I agree with James, on both points - if you must use an IVR for routing then 4 items, 2 levels max works, but if you can get away from menus altogether it's even better. Routing calls direct to an agent may have some merits, but only if they are skilled enough to handle the call - otherwise the caller gets into the transfer/re-explain why they are calling trap. There is the alternative of using speech recognition to make the call routing more natural, especially with the "say anything" type solutions, but the costs can be high for small to medium size call centres.
IVR and call routing is one area where the KISS principle is absolutely vital - and you MUST design the routing from your caller's perspective, not to suit your internal processes or departments. The selections should be based more on what they might want to do, rather than which department you want them to talk to. And the IVR messages and routing should be reviewed and updated regularly to ensure that it is still relevant and effective, otherwise the caller will find ways of by-passing the IVR completely.
An interesting test is to try out your own company's IVR and see how obvious it is to you - and whether you get to the team or person you expected to. If you dont like it, you can be absolutely certain your customers wont either.