Any other pitfalls I'm not considering?
In practice, the main mistake I see people make is trying to force the use of F# for problems where it is the wrong tool for the job.
Or anyone care to rebut the pitfalls I've mentioned?
They are all obviously valid concerns to some degree but I'd question to what degree.
For example, you say that everyone would have to learn F# in order to work on F# code. Although true, this is not a big deal in practice. Learning F# is no more significant than learning WPF, Silverlight or the TPL. I'm teaching about 30 developers how to use F# for a client in London right now and about a dozen were working full time on F# code after only a few weeks and they just shipped their first product (on-time and in-budget!) written almost entirely in F# after only a few months. In point of fact, they had more technical difficulties with Silverlight than F# and they found the tech support for Silverlight to be much worse than for F#.
You refer to the relatively small pool of available F# programmers but, again, given how easy it is to pick up F# I don't think this is a significant concern. I doubt you'll need to hire many, if any. My client has two F# guys for over 100 programmers and our job is to seed and supervise the use of F#.
Your third and final concern regards less community support, Googling for C# solutions vs F# and third party tool support. Again, I haven't found these to be problematic in practice. I e-mailed fsbugs with a comment about units of measure in F# and got a response within 24 hours from the researcher who invented it with a detailed explanation of why my interpretation was wrong and why it works the way it does. I never got that from Anders Hejlsberg ;-). I Google for solutions all the time and find them written in C#, VB or even IronPython but, in 3 years of using F# industry, can recall only a single instance where translating the solution into F# was not trivial. In point of fact, I recently converted the data serializer C# sample from MSDN to F# and it was 5× shorter. Finally, you mentioned F# support in tools like NUnit when we've been using NUnit from F# without issue for some time. These are .NET tools, not C# tools.
Case study: My current client is not only using NUnit for unit testing but they built TickSpec in F# on top of NUnit as a technically superior alternative to SpecFlow for BDD. The author made a point of showing me that TickSpec is a tiny fraction the size of SpecFlow and provides more features. Moreover, several of the developers at work with no prior F# experience (and, I believe, no prior functional programming experience) have picked it up and started using it in unrelated projects without issue precisely because F#+TickSpec make it easier to solve their problems.
FWIW, I gave my client a free site subscription to our F#.NET Journal which went down well with many of the devs learning F#.
HTH!