There's a dilemma that developers face when deciding to release source code that's bigger than fear of software theft or the desire to hide something evil in the code. It's a fear of being scrutinized, ridiculed, or humiliated over the quality of their code.
Imagine 2 programs that do something useful and are functionally equivalent. Program A is closed source. Program B has source code available for inspection. Suppose on inspection, program B's code turns out to be bloated, ugly, poorly organized, and with many potential bugs or defects. B's reputation is screwed. However, for all you know, A's code is just as bad or worse. But you don't know for sure.
Bloggers and reviewers will write that no source is available for A.
Bloggers and reviewers will write that program B's code sucks.
The consumer reads that "program A doesn't give you source code" and that "program B's code is garbage", but are otherwise functionally equivalent. Which do you think will have greater influence on most consumers and their purchasing decision?
That's one major reason why more developers don't release source code. I wish I knew a way out of this dilemma.