I'm in Thailand for 6 months. I already spent all the cash I brought over (not much) and I can refill from an ATM. I have enough money, but what is really bugging me is the horrendous fees for using ATMs. It's $5 to use an ATM anywhere, + a rather poor exchange rate. I tried opening an account at a bank but that seems impossible with a tourist visa alone.
It is still possible to find ATMs which do not charge the 150 baht fee for international withdrawals. As of Jan 2013, the Aeon ATMs skip the fee. They are in many shopping malls (e.g. Siam Paragon, Terminal 21), but usually difficult to find. Citibank used to allow this as well, but no longer.
Exchange rates at ATMs are consistent and almost always better than in other places. Do watch out for hidden and public fees on your home bank's end -- some banks add a 1-2% "exchange fee" plus some amount in fixed "because we can" fees.
Policies on opening bank accounts in Thailand vary by branch. There's no law or consistent set of rules, even within a single company different branches have different rules. If you try several banks/branches, there should be one that lets you open an account without a longer-term visa. A basic ATM account should be cheap and easy. Once you have a local account, you can use a wire transfer to get money into it from abroad. The send/receive fees are usually fixed ($30-$50; check both banks), this works out cheaper than international ATM fees for large amounts. When wiring money, send USD and have the Thai bank do the exchange to THB.
Unless in a huge rush, avoid Western Union: their fees and exchange rates are atrocious.
If you don't have access to a local credit card (know a local person) then I have found myself to be out of luck. I simply withdraw large amounts each time, once per month maximum. So 6 times for 6 months, will cost you $30.
But that is cheaper than wire transfer charges anyway, which often is 3%+ on top of whatever they charge for currency conversion.
In my experience it is easier to withdraw larger sums and bite the sour apple than any other solution I've found. Apart from bringing larger sums of cash from the origin country.
Here's an approach that may or may not work, depending on the type of credit card you have and their rules.
What you need is a credit card that will allow you to put the balance into credit, has high limits for cash advances, has low or minimum foreign exchange fee, and low or capped cash advance fees.
First, with internet banking, put the credit card into credit (if they allow you to). Just a card you don't have any balance on or use for any other purpose.
Then, go inside a bank and ask for a large cash withdrawal (enough to keep you going for a long while, but within the card limit). The amount available in a branch should be larger than at an ATM (you can find out from the credit card company beforehand). Expect good identity checking.
(if you can't put the card in credit beforehand, pay it off right away, same day if possible).
Possible fees include the currency exchange (you're already paying), plus maybe cash advance fees. If the cash advance fees are capped then for a large amount this could work out cheaper, you'll have to run the numbers beforehand. For some cards, there are no cash advance fees if it comes out of the credit balance. Check.
Another approach is to use a debit card often for small transactions, and take the maximum cashback each time, if that is available there. Assuming of course the debit card does not have a foreign per-transaction fee!