I know I'm resurrecting a ghost here, but I had the same problem, and wanted to share what I think is the best solution. There are a few ways you can do it, either splitting the string and replacing the first letter, or transforming it into a char-array for better performance. The best performance, though, comes with using a regular expression.
You can use a bit of Regex voodoo to find the first letter of each word. The pattern you are looking for is \b\w (\b means the beginning of a word, and \w is an alpha character). Use a MatchEvaluator delegate (or an equivalent lambda expression) to modify the string (the first character, that your pattern found).
Here's an extension method over string that will upper-case-ify the first letter of each word in a string:
static string UpperCaseFirst(this string input)
{
return Regex.Replace(input, @"\b\w", (Match match)=> match.ToString().ToUpper())
}