I'm in a similar boat. With nobody to review your code, it's tough to evaluate your work and grow as a professional.
At a minimum, I recommend finding a local software development group and attending meetings regularly. Meetup.com is a good place to begin looking. CocoaHeads is great if you do Mac-specific stuff. A good group meets once a month, has some kind of presentation meeting, then goes out for dinner/drinks afterward.
You should aim to participate: prepare some slides on a technical topic, then offer to present. (Telling yourself you'll make the offer when you have time to prepare puts you in a chicken-or-egg loop and you'll never do it.) You'll get a feel for what the norm is for the group, but don't put a ton of pressure on yourself to do a perfect presentation. (The guy in the room who points out a problem in your example (1) was paying attention and (2) feels good about himself, and will be predisposed to like you. Offer to buy him a drink afterward.)
If you can't find a group, start one. Post it on Meetup. Build it, they will come.
Aside from learning a thing or two, this will make you part of a community, which is invaluable when looking for projects or, God forbid, a full time job. If you're too busy to take on something new, you can refer it to one of them, and in the future they will return the favor.
Now, one tech presentation a month doesn't really do much for your skills. So make time to do some reading (blogs and books).
Answer questions on Stack Overflow, and take the time to browse other people's solutions to questions you find interesting (even if it's not related to anything you are working on).
There's also a Code Review Stack Exchange in beta right now. Use it for your own code and participate.
None of those are a complete substitute for working with others, though. In that case, I'd consider making an effort to contribute to an open source project. Be the guy to work on the boring but necessary parts that project maintainers complain that nobody ever wants to do. But pick a product that has some active development, where there are other people who will review the patches you submit. (Releasing your own thing as open source can be good P.R. for your contracting business, but unless you attract contributors, you won't get the feedback you're craving.)
I'll confess that I'm being mildly hypocritical: I don't do everything on the above list, but I make an effort. Some months coding will keep you too busy; other months you'll feel like you diddled away hours editing tags on S.O. But working for yourself is like that. And it's a nice feeling when you show up at the monthly meeting and people ask you where you've been.