Running a network and optimising your code are very different tasks; better to find two separate companies/consultants each of whom are experts in their field than to try and find one company that's good at both of them -- it'll always be a compromise.
The tricky bit is that there's a third component to the mix -- systems administration. You either need to have your hosting company or programmers provide this aspect, do it yourself, or bring in a third outsourced company/consultant to do this work.
Seeing as I work for a hosting company that does a lot of outsourced sysadmin work, I think the hosting company can do the sysadmin work, but I also know that there aren't a lot of companies that really cover all the work implied by the term "systems administration". The problem is that a lot of companies have a "fully managed hosting" product, but what is actually included varies a massive amount.
Ask a lot of questions about what exactly is covered by any "server management" agreement from your hosting company (or, for that matter, any other systems administration contract) -- and don't be afraid to go back and forth to compare exactly what each company will do for you and how it will be billed. Things you definitely want to make sure are covered include:
- Security patching
- Reactive handling of alerts ("webserver down" -> find the fault and start it again, do a root cause analysis, etc)
- Proactive analysis of system performance to determine server capacity and when you'll be needing upgrades
- Network (re)configuration
- System package installation and configuration (webservers, databases, etc etc)
- Assistance with scalability (advice on performance analysis, load balancing, etc as your site grows)
- Liasing with your developers directly to resolve any problems with performance or whatever else you don't want to deal with yourself
- Handling technology-specific issues in the production environment (while in theory your developers should be capable of handling this part of things, in my experience most developers don't like doing this, and avoid it wherever possible -- and a happy developer is a productive developer)
You're looking at a fairly similar process to find your developer -- determine what you need and then talk to several developers familiar with the technologies you're using to find out what they can do for you. Decide what you want first, too -- do you still want to stay as the primary developer, or are you looking to handover day-to-day maintenance of the codebase to someone else? If the former, that's not a common requirement, and you'll have to work harder to find the right person or company to work with. Most developers want to develop, and don't want to tweak -- and again, unhappy developer == unproductive developer. If you pick the wrong developer to help, you'll find they'll be spending thousands of your dollars rewriting half your codebase when all you wanted was a bit of analysis into why a particular page was rendering slow. (That's not to say that it might need rewriting, but it's better if you know that in advance of it happening).
Talk to the developers about the sysadmin side of things, too -- while I don't know a lot of developers that are also capable sysadmins, there are a few out there, and if you come across them they can be an awesome combination. Most of the best developers I've met, though, know their strengths and play to them, and have got sysadmins lined up to do that work for them. So, tap their knowledge -- find out if the developers you talk to have a preferred hosting company and/or sysadmin (team?) to work with, then go and talk to those people and ask all the sysadmin questions all over again.
Also, steel yourself for shelling out a reasonable chunk of cash. Good people don't come cheap, but bad people are even more expensive in the long run.