This might have been covered elsewhere, but I'll mention it incase anyone is having the same woes.
I have a page on my car site selling insurance, but for some reason, adsense just kept show "car" ads instead of "insurance" ads on this particular page. It seems that adsense had decided to take a general theme snapshot of the site rather than looking at individual pages. However, by passing a dummy parameter to the insurance page, e.g. insurance.asp?a=1, google thinks ahh, this page could be dynamic, better make sure the ads are relevant, and sure enough, the page displays insurance related adverts. If I then go back to the page without the parameter, it reverts back to showing "car" ads..!