Provide what the client wants. If you want them as a client that is.
Having some mock ups for the UI is probably a good idea. Covers your ass too. You want there to be some decent detail in what the program is meant to do so the client doesn't keep coming up with new and wonderful things to add without paying.
It's true that there will be some evolution, but as stuff like that comes up you can amend the scope to reflect new agreements. The cool thing there is that it requires your agreement.
So while I've not done much freelancing myself, it seems to me like a good idea to have a nice, detailed scope explaining what the program will do and more or less what it will look like. I'd use some RAD tool for prototyping the UI...Qt designer or something. If you can do it in the system you'll build the product in, all the better.
Where I currently work we actually have to do this kind of crap even for internal projects. We treat the mucky-mucks like clients because they demand it. Not allowed to do much of anything without 50 miles of paper and a month in committee.