Let me tell you why an hourly rate is the best idea. Recently I had a project for some animation that the client wanted done programaticly with Actionscript and after looking at the code I thought that it would take about 12 hours. After agreeing on the price I dove right in and found out that there was some code that had to be rewritten. It took me 62 hours to do and I still got paid the same.
What I do when I build a website is base it off of a set number of hours that I think that it will take and make sure that people know that anything past those hours are billed at my normal rate.
Recently I had a client that was alloted a certain amount of hours for her project and had over 190 hours of changes that she wanted done for the same price that she paid because she wanted a website how she wanted it regardless of how long it took me.
It's WAY too difficult to pin down in a contract each and every little detail that can go into the creation of a web site. So in order to not get burned I do it by hour. This does not mean that you have to charge for every little thing. I bend over backwards for my clients when they have changes and only when it's something that is way outside the scope of the project do I charge them.
Your not selling a product your selling a service. The service of creating a website and graphic design and hosting and the knowledge that you provide in your expertise.