We have 6 offices in 2 states, with about 50 employees. Hosted VoIP is a natural solution for us.
FreePBX is a DIY solution. You'll have to do pretty much everything yourself, which is neither good or bad, but depends on your situation. If you have the time and patience, you can learn and create a nice stable VoIP system.
Support is limited. Getting help is difficult and expensive. You will spend a lot of time on forums, and the results can be spotty (we have an ongoing bug that apparently cannot be solved). The Wiki for FreePBX is basic, but you need a high level of proficiency in Unix operations, and there are very few real-world examples or how-to documents available .
Out of the box, you can build a good basic system. There are lots of add-ons you pay for, so the bill can get big if you're not careful. Be judicious with the bells and whistles, and you can keep your TCO fairly low.
A drawback is the multi-vendor nature of this solution. Support is a bit of a nightmare, as you'll get bounced from phone to system to software to connectivity providers all claiming it's not their problem. Be ready for that, and be your own strong advocate.
After much tuning and stabilizing, we now have a solid VoIP solution we've been running for 3 years, with 1 year of true stability. Adding functionality and modifying it for changing business needs can be a real challenge, so we're a bit wary about mods.
All things considered, it's been a fun project, though the pace of change in VoIP and business technology has rendered the system as it stands arcane and limited. A single-vendor turnkey solution with full support and an upgrade path would be better for a small company with limited resources.