Abbreviation for "In My Humble Opinion".
"in my honest opinion" is a latter-day misreading of this coinage. IMHO used as In my Humble opinion dates back to the earliest days of the internet. Just look at the Jargon file. It has the "humble" reading and no others.
Back when the net was new, and email and news were all there was, people found that in this new medium, their emotions got out of hand too easily, and discussions turned into all-out arguments. It was called flaming. Not much has changed.
At the root of the problem is the way that plain ascii text, quickly written and sent, has a very conversational style, and is read as if you where talking to a person. However there is so much that it doesn't convey, and so misreadings are easy. This is why we have developed ways to signal your non-verbal content. For instance fake-HTML tags are becoming popular: <sarcasm> this is in a different tone, in case you hadn't noticed </sarcasm>
I have never observed anyone misreading someone's opinion for a deliberate lie, i.e. for a dishonest opinion. In My Honest Opinion, even if it were the original coinage, would be completely unnecessary.
In fact, the reverse is true. It is easy to read the ascii text of a hesitant statement of current opinion as a high-handed command on The Truth (tm). It is all to easy to infer arrogance that is not there, i.e. to take a humble opinion for a arrogant commandment. It became common to avoid flames by writing "In my humble opinion, xyz sucks and abc rules", instead of just "zxy sucks and abc rules".
Hence, IMHO was born as an abbreviation for this phrase, followed shortly by IMNSHO (In my not-so-humble opinion) when speaking on a subject on which you know yourself to be an expert, and many other variations.