I have programmed my whole life, and I have always had freetime game projects (mainly C/C++ and Java). Sorry, none of them are currently available for downloading… As I just recently found out Blender and its game engine, I really can’t say at the moment anything about its performance, but I can say something about my game projects. I have currently one test game project to learn to use BGE.
Usually, I tend to work heavily with the game internals - for me, games are their internals
Graphics comes slowly to game (and sound effects even slower, if ever), because usually when making changes to the game internals you need to remake all the graphics. It really does not encourage to put effort to finished outlook until you have a working game, and sadly as a programmer you usually loose your interest to the project at the exact moment you have somewhat working game logic (if no-one is paying you to finish it). All the games I have done were never really finished, and all of them were using the temporal “demonstrative” “placeholders” as graphics at the moment I left them alone.
Making a game that looks finished is not an easy task to do. Usually games have much more content than players ever realize. To make it look finished, when getting your game logic complete, you need to remake just about everything to fit together. The larger your game is, the more laborious task that is, and usually non-commercial game developers just don’t have enough interest to do it; it is enough to know that it could be done. One of the few reasons I could imagine I would polish my game projects would be trying to attract other developers to help to finish the game.
About Python. Yes, it is not the fastest language in the world, but it works in multiple platforms without compilation, unlike e.g. C or C++. It is probably still true, that if you would like to make a game with cutting edge features, you probably would need to build many additional features under scripting level with lower level languages. But still, you probably would have some sort of scripting language at the top of your game engine to fit the pieces together. You may do it by yourself by gradually extending your data file manipulation routines to a programming language, or you may use some existing one.
Implementing game AI can be very difficult with any language. Compiled languages help a little bit, but usually game AI’s are full of algorithmic tricks to make them work in real time. I have done several board game AI’s, and at the moment I would really think twice to change the language to compiled one (I usually start all my projects with Python). AI algorithms often involve lots of such work, that can not be avoided when changing language - they tend to build huge data structures to dynamic memory, and building and managing is slow process even with C++. But I might be wiser about this subject later, as one of my main points of interests in the current game projects is the game AI.