I always pay by credit card so that I can get the points.
The only time I would give a hotel cash would be if it is my last stop in a particular country where I still have some foreign currency remaining.
Another way to pay would by wire transfer. Call the hotel and ask for the accounting department and they should be able to give you their banking details.
Also, if you stay at a particular hotel often enough, they might even let you open an account with them and invoice you after your stays.
If you book through a travel agent, you can give them send the hotel a "deposit" on your behalf.