When to give it to a professional
To be honest, every average chimpanzee can produce a web application that gives you 70 - 80% of the required functionalities. It is the remaining 20 to 30% that is hard to develop. When you arrive at 70% and feel stuck, it is time to get help. If you already have this feel, find a professional and ask his/her help.
How much would it cost
If you just hire a lone programmer and ask him to help you structuring the application and writing some code (that is: you will keep on writing code and administering the server) you can expect to spend just few thousands of US$ globally (most likely in a few months). If you give the responsability to design, code and style a new web site to a team of professional, you can expect to spend few tens of thousands dollars. Keep in mind that, in this second case, you will get a graphic designer that will take care of the site style and a few other professionals that will give you much more than just code.
How long it would take
Not less than 2 or 3 months, in any case. Most likely 6 - 8 months if you work with a single programmer. Most likely 4 - 8 months if you hire a team of professionals (what it is usually called a "web agency" in Italy and a "web software house" in other countries).
Best way to run alone or with a programming partner
Please, take into account Ruby-on-Rails and Refinery CMS. Take them into account even if they would require you to start from scratch. It is easier to create from scratch a document-oriented web site (like yours) with a Ruby-based CMS like Refinery or Radiant than "improving" any existing home-grown, PHP based one. Have a look here for a choice of Ruby CMSs: https://www.ruby-toolbox.com/categories/content_management_systems . If possible, do not write code. Just configure and tweak an existing CMS. Refinery is fantastic for this ( http://refinerycms.com/ ).
Please, stay away from "naked" PHP, MySQL and LAMPS platforms. Do not try to home-grew your web site in this way. There are much better (open source, free) solutions on the market nowadays. Stay away from Java if you work alone or with a single programming partner. Java (Spring, Wicket, Tapestry, etc.) can be heavy to manage, in particular for what regards the server administration and the application deployment. Java is mainly intended to be used and managed by a small-medium size team of professionals.
Best way to go with a team
Just tell them what you want (not how you want it done) and wait.
Bets way to choose a partner programmer
Please, look for a seasoned web application programmer. Look for someone who already build at least 4 or 5 web applications in the last 4 or 5 years using the best tools on the market (Ruby-on-Rails, Django, Pylons, etc.). Look for someone who can demostrate you he/she still read books and magazines and he/she still lives on the web, reading articles and partecipating in forums. You need an intelligent, well-informed, web-addicted guy, anything else. Look for someone who speak his mind and can demonstrate he/she can suggest you the best road to follow. Writing code is quite easy nowadays. The hard part is deciding which code to write.
Stay away from people who use old-school tools (like Perl, naked PHP, old LAMP solutions and the like) or who use their own, home-grown tools. You need a modern, standard, elegant tool that other programmers can maintain for you in the near future.
Best way to choose a team
Look for a small, web-oriented software house that already did something similar to what you want to get. Look for a team of 3 to 5 people including at least:
- One proven, good programmer (Ruby, if you will follow my suggestion)
- A graphical designer (someone with your same aesthetical sense)
- A good project manager. Someone with good manners and a clear vision.
Best way to choose a partner programmer
Look for someone on the Net and talk with him/her. Ask to see his/her portfolio. Ask for his/her opinions and suggestions. You will quickly understand who is the guy for you. Unfortunately, in this case you have to look for someone who can physically work with you. It must be a guy who can reach your office every morning in some way.
Better a team or a single programming partner?
A team. Working with modern, best-of-the-breed tools would probably require you to start learning almost from scratch. You would be better entrust a small team with the task to develop your site.