The Plan
With high-level modern programming languages, it is surprisingly easy to make useful software. I don't want to start a flamewar here, so I will leave the choice of language to the reader.
The first key is to find a niche. Easier said than done, I know, and I am sure it was easier for me 5 years ago than it will be for you now. But it can be done. Find a type of program that does not have any good free alternatives, and create that program. Some areas you want to avoid are forums (sat-ur-ated) and content management systems (too complex). Don't get discouraged if you can't think of something off the top of your head. As most webmasters know, it can be hard to find high-quality free scripts. Try browsing through Hotscripts.com and seeing if anything catches your eye.
The bulk of your work will be the actual programming. As I'm sure most programmers have been told before, take your time and do things the right way. It'll be worth it down the road. Don't be in a rush to finish your script.
The Execution
Programming may seem like the most important step in all of this. It definitely takes the most effort. But, there are countless programmers out there who are more knowledgeable and experienced than me and you combined. Fortunately for us, they probably have better things to do than worry about simple little scripts. This isn't rocket science; we're not doing anything that complex here.
Finding a place to distribute your script is easy. SourceForge.net, BerliOS, and several other sites happily provide hosting for all types of open source software.
The key to making money from OSS software is promotion. Put a little link back to your site at the bottom of your program, and release it to the masses. Submit it to directory sites like freshmeat.net and Hotscripts.com. If your program becomes a success, you will have thousands upon thousands of links back to your site. Google say 14,900 link to mine. Not bad.
The Reward
Of course, you can have a million sites linking to you, but you won't get any hits if no one clicks your little link at the bottom, right? Well, not exactly. Those 14,900 links bring me very little traffic. But, they bring me something more valuable... Google PageRank, which is based on the number of incoming links to your site. PageRank runs on a scale of 1 to 10, and as your PageRank increases, it is more difficult to move to the next level. For example, k5 is PR7 and Slashdot is PR9. The higher your PageRank, the higher your placement in Google searches. And that applies not only to your site, but also to sites you link to, which makes it a powerful tool.
Advertisers are willing to pay around $50/month for a small text link on a PR7 site and $25/month on a PR6 site. You might be able to get a little from a PR5 site, but anything lower than that is too common to be valuable. My main site is PR7. $50/month may not sound like much, but I currently have 11 links. How does $550/month sound? And I'm doing the same thing on another site now, but it's only PR6. 10 links there bring in $250/month. Sprinkle in a little Google AdSense, and my total revenue for both sites combined is around $1000/month. That's not bad for a summer job, especially since it pays all year round with little upkeep.
More money, enjoyable work, and more free time. All from a simple script. Isn't free software a wonderful thing?