I start with the purpose and the data. What do we collect, what do we output and how do we manipulate and store that in between. Is there user input, customer input or just myself maintaining a static site. That is the basics.
From there I create a set of test data. Some Ipsum Lorum text and imaginary users and design my database.
Once I know what data I have to display, I can begin to design the display. Some people like to photoshop this part. I like to do it natively in HTML with just minimal graphics cause that's just my preference. I will also draw up from HTML forms for the input side, user login and such. They'll be no backend at this stage. I have my database and the front end designs.
Now I take screen shots of the design and present them to the client. They usually have a few small modification to make at this stage. This is to be expected. Usually it's noting difficult to do since your just tweaking html pages. I often make the changes on the fly at the client meeting if they are easy changes.
The last part I do is the admin pages for the customer to control the site. If I'm controlling the site, I might skimp on this and just make to with phpmyadmin to make changes. When everything's finished I let the customer play on the local version of the site. If they are satisfied, I'll upload to the server.