Never charge by the hour, as it gives a ceiling to your potential earnings. Charge by the job/retainer/etc and then spend a lot of energy becoming more efficient.
"Time and materials" billing is totally appropriate if the two parties trust each other and the nature of the project is open-ended or loose about the deliverable.