Yes. Most (all?) of these huge fees are caused by user error. People mucking around creating raw transactions, or coding bad wallets.
When creating a transaction by hand, the difference between inputs and outputs is given to miners as a fee.
A naive hacker can easily use a 50BTC input and assume that paying 3BTC to an address results in 47 remaining at the old address. Not so - the remainder of 47 goes off to mining land.
Updated charts for block 334725.
The most interesting changes recently to me are the leveling off of difficulty, and the continued increase in average block size. Blocks are roughly 375KB on average now, up from 225KB six months ago.