I suspect for the small companies it is partly using what you know, they come from a gaming background and are instantly productive in C++ as the know it inside out what what libraries to use. Java is an unknown to them and therefore a risk. Their other rational is starting a small company is risky, if it all falls apart then you need a back up plan. If you have been coding in C++ then the owners can easily slip back into a mainstream games company and continue doing what they love. If they have spent the past 3 year coding in Java then it would be harder to convince a mainstream game company to take you on.
I am not saying I agree with these view points just trying to show a possible mindset that means people in small companies continue to use c++ rather than changing to Java or C#. Things are gradually changing, the games industry always lags behind the rest of the computing world, although it may be Microsofts marketing of C# as a gaming platform that leads to C# being the dominant higher level gaming language.
Java needs a higher profile but to get that is need more quality games written in it. The classic chicken and egg situation as people have already mentioned.
ps. First post by the way…