What limits the performance of evolutionary computing techniques? What limits the current performance of genetic algorithms and neural networks?
The principles underlying these techniques, at least the popular science presentation of these principles, suggests that with enough training they could be improved
as much as desired. It seems that this is not the case though.

What are the causes for this? Why can't better results be achieved simply with 
more computing power? Are there fundamental theoretical reasons for this?

I realize this is a very broad question, but I'm sure some of the people here 
push against these bounds in their work, and I'd like to hear what they have to say.
To bring this to something resembling theoretical computer science: In his PNAS 2008 paper A Mixability Theory of Sex in Evolution, Christos Papadimitriou has theorized that one limit on the power of genetic algorithms is that they do not optimize what you think they should be optimizing (the objective function you're using in the selection part of the algorithm) but rather they optimize "mixability" (a measure of robustness, the ability of genomes to be combined and still have a high objective function value).

So, if the space of solutions that you're trying to optimize has moderately-high plateaus of pretty good but not great solutions that combine well with each other, and a few steep spikes of high quality solutions that do not combine well, you'll be stuck on the plateaus.

Papadimitriou then uses this observation to make inferences about sexual reproduction in nature, but that's getting off-topic again.