Question: I'm wondering why some people release software as freeware, yet they don't release the source code. Why is that? I can think of some reasons, yet most of them don't make very much sense. Why would you want to keep the source closed but let the program be freely available (free of charge, not free as in freedom)?

Answer: 
There have been 2 great answers so far but here are my reasons that I can see:

1. It is more trouble than it is worth.
2. They use the freemium model
3. Don't feel they should

For #1, if the product is free and the person isn't seeing any profits from it, they may not feel like having to deal with hosting the source code and making sure that they update it whenever they make changes. Now, I know that it isn't that big of a hassel but who knows, it may be big enough to discourage some

For #2, if they use a freemium model, then releasing source will basically allow people to add in the features that they charge for and cost the developer money.

For #3, I think that it has been a tradition (of sorts) for Windows programs not to be open source (no facts to back me up so I could be wrong). Windows has been a closed-source platform so it isn't expected to release source for something that is free. The original question doesn't specifically mention Windows, but that is where I see the majority of free but not open source software.
Despite the general bad idea that security-through-obscurity is, in the malware removal field, its a constant cat and mouse game between those of us who write analysis/removal tools, and those writing cleverer and cleverer malware. Sometimes we release a tool freely to users to use, but try to obfuscate the tool's operation in order to make it more difficult for malware authors to defeat the defeat tool :)

This is obviously atypical for most software, but it's something I see all the time.