Never deliver a prototype. I know this sounds simple, but it's important.
It's very easy to upload the latest version of your code to a client's server just to give a demo and accidentally leave it there. Then, before you know it, your client is off trying to use your software like it's finished which can lead to all sorts of problems.
If you have to give a demo, fine. In fact, I encourage it. Demos show progress and ensure you and your client are on the same page. This can correct potentially disastrous issues and communication lapses early on in the project and help ensure everyone wins. However, no matter how clear you think you are making yourself when you explain to them that this is "for demonstration purposes only", I promise that the second you turn your back you might as well have said "Sure, it's done! Have at it."
The last thing you want is for someone who doesn't know what they are doing to damage your reputation because you thought it would be cool to show the client some pet feature they didn't even ask for.
Never deliver a prototype. Never, ever.