Fees are high because transaction capacity has become an artificially scarce resource. Theres only 1MB of data allowed per Bitcoin block, or in other words, only 1 MB of data allowed every 10 minutes. Its a piddling amount of data, considering that my home internet connection has a download speed thats 420,000% greater. Its important to realize that transaction capacity is currently scarce because of a limit that was placed into the code and that has been kept there intentionally by the Bitcoin Core developers.
Without this artificial limit, there could still theoretically be a scarcity for transaction space, but it would be purely market driven (based on the willingness of miners to produce bigger blocks.). As it is now, this artificial constraint of 1MB means that you have compete with everyone else and simply outbid the rest of the world.
Sucks, right?