EDIT: When I wrote this answer (in April 2017), I didn't realize this question was asked 2 years ago (I saw it at the top of the list of new questions on the stackexchange site and assumed it was just asked). Leaving it here for future reference though. (Hopefully a lot of it becomes a moot point after Craft 3 is released)...
I think technically Craft is capable of handling large sites, and it's probably a good choice (as good as any PHP CMS out there). But you will run into some problems due to the limited customizability of Craft's CP (back-end dashboard interface) and how it stores field/entrytype schema in the database. I'm building a fairly large site now (thousands of product pages for a catalog, each of which has between 1 and a dozen photos and additional support files). The big challenges I've run into so far:
- Asset manager chokes when there are too many folders. I originally set the product page assets to have a separate folder based on their slug, but then my CP kept crashing because it was trying to list 1,000+ folders when you expand the asset source in the left sidebar. So instead I need to figure out some code that creates sub-folders based on the first letter or few letters of the slug (just breaking it up into more of a hierarchy than a flat list).
- Asset manager doesn't search through all the assets... I think it only searches the folder that you're currently viewing. If your client isn't very well organized with where they place uploaded assets, it could become difficult to locate them.
- Craft has no functionality for setting up restrictions on your page hierarchies. For example, we have product categories and underneath the categories are product detail pages. But the products within a category need to be manually sorted (they are not necessarily displayed in alphabetical order)... and craft provides no way to achieve this. You can have 1 big "Structure" section of the site which does allow manual sorting of things, but you cannot impose any kind of restrictions such as "product pages can only live underneath categories".
- All field/entrytype schema information is stored within the database, which makes working on the site with a team (and with multiple servers e.g. local dev, staging, test, production) a total pain. You either need to write down your own notes of how to recreate certain changes to fields/entrytypes, or send database backups all over the place (which is impossible if 2 people are making their own structural changes). On top of the pain of collaboration and deployment, there's also the fact that you cannot put your schema changes into version control. And once the site goes live these problems are further compounded because you're basically having to do a portion of your development on the live site (for future feature requests where you need to add/change fields or entry types).
Hopefully the forthcoming Craft 3 will address a lot of these issues (I know they're revamping a lot of the asset management stuff, and adding in a way to migrate your schema in code, and I have a feature request out to address the hierarchy restrictions so hopefully that gets added someday).
But despite these limitations, overall I think Craft is capable of the large sites. (It seems to have good solutions for optimizing page queries via "eager loading" and good fine-grained caching mechanisms with its {% cache %}
twig tag)... and I think we're figuring out ways to hackily work around the limitations for this project. Every CMS has its limitations, it's just a question of which flavor of hassle do you want to deal with :)