Yes, now a days I have seen many freelancers do work for such ridiculously low rates, you wonder how they make their ends meet! Yes I have seen some freelancers quoting say $50 when you feel that even with some price adjustments one cannot afford it for say $200. Though with freelance sites the advantage has been that the market has become more competitive, many genuine developers have been at a receiving end because you can never match those rates.
Now coming to your topic that the specifications changed and even then you tried to accommodate some of the tasks in your billing, yet the client was unhappy. Yes, even under any terms and conditions we can be quite specific as possible but somehow if someone wants to find loop holes one could easily find one and ask you to complete the tasks.
This recently happened to me on one of projects. Initially based on the specifications I created a t and c and got approval from client to proceed with work. Once the basic changes were complete, I got a new set of changes. Now I told them that I had already done the work to which I was told that its the same set of changes but now they wanted different layouts / color schemes etc. When I said that it would need a similar amount of hours again, they said as a part of the t and s I had agreed to these set of changes. Now there is no way to prove that you already did that set once and now that the specifications really changed, but as they were the same set of changes to be done there was no escape route and I had to re do all the changes as per the new specifications. This did not end there. After that came the fonts issue. Similar to what you were facing. I was told that the font size and type do not match the PSD provided. When I said there were premium fonts and you need to get a license I was told it was my duty to get the font and make the size as per the PSD provided. When I mentioned that fonts are never part of any web coding deal unless specified, they said as per t and c - the developer will see to it that the final output matches the PSD design provided - though there was no mention of fonts, I had to finally get the fonts and install it.
Hence, now a days once need to be really careful and check each and every word before finalizing a contract because you are not sure where you end up. Sometimes, it becomes quite easy to let go the project and focus on other projects because if you keep following up one project you will finally end up annoying other clients trying to keep just one client happy.
I too feel that once the specifications had changed, to simply walk out and say sorry cant work on the project further without extra payment would have been easier rather than spending almost 3-4 times the initially discussed hours and getting paid peanuts - why because some freelancers do this for the same amount!