I did freelance work last summer, and basically did the same thing you did. I emailed a few local startups and asked if they wanted a website done. The only time I did work for free was the first time, because I literally had no portfolio, no web presence, no nothing. After I made that first site I used that as my portfolio, and started charging from then on.
I only have a few months worth of experience freelancing, so I don't know nearly as much as some of the other guys here. But here are some tips I can give you:
* DON'T charge less or do free work just because you're new.
* Don't tell people you're new unless they ask.
* Pick an hourly price, say $25. Then figure out how long you feel a project will take to finish, say 10 hours for a small site. Charge them 10*25, $250 and ask half up front, half at the end.
* Create a portfolio site, go balls out and really try to show off your skills. You can even use THIS as your portfolio!
* Use a free time tracker, such as https://www.toggl.com/ to keep track of where your time is being spent. Working from home can get distracting, trust me...
* Take every opportunity to learn. If a project seems a little bit out of your league, shoot for it anyways - but be honest with yourself. If it's way out of your current skill, simply skip it
* Sell yourself. Be confident, there are tons of people looking for websites to be done (some don't even know that they need one ). If someone tries to low ball you, tell them "Thanks for your interest. Here's my card (or email), let me know if you change your mind".
If you're a developer:
* REUSE CODE. That's important!!! Keep a library of frequently used code, and copy/paste it as needed. This will save you a lot of time.
* Learn to use a code expander like http://smilesoftware.com/TextExpander/ which lets you type long words/phrases with only two or three characters. The one I use tells me how much time I've saved by doing it (43 hours since Decemeber 15th 2011)