See this list: http://www.serebii.net/heartgoldsoulsilver/tmhm.shtml
5 ways to get TM's
- Find in the wild
- Win from gym leader/battle or other gift
- Purchase with money from a department store
- Purchase with coins won from casino games
- Purchase with battle points.
Many of them can be obtained multiple ways (Both found in the field and as some form of purchase)
Only about a dozen are not able to be purchased and these are usually the ones given away by gym leaders.