I have seen several people on different forums with the same problem and it turned out to be the horn relay. It's a cheap relay, about $15 at the dealer. You can swap it with another one and see if it works before you go get one, but make sure you swap it with a non-essential relay and not the ABS, etc.
There's a relay chart at
http://www.theschillings.com/boxrelay.htm to help you find the horn relay.
Hope that's all it is!