Yeah, I started with GnuCash. Unfortunately (or maybe fortunately as it turned out), I desperately needed good support for currency trading accounts: http://www.mathstat.dal.ca/~selinger/accounting/gnucash.html
(I am a Canadian, living in Japan, consulting for a UK company :-P My company has to calculate capital gains on transactions in 3 different currencies...). At the time I was using it, GnuCash had some annoying UI bugs with the optional currency trading accounts feature. A friend suggested that I try out ledger.

Now that I'm using ledger I would never, ever go back to GnuCash. It's not that GnuCash is bad -- it isn't. But when I started doing actual accounting (especially with foreign currencies), I could never get anything to balance in ledger. After working at it I finally understood why -- I was doing it all wrong! Being a complete neophyte I had no idea what the difference was between LIFO, FIFO and average cost or how I could represent it in my accounting. GnuCash would say "You made this much capital gains" and I just accepted it. With ledger I would look at the reports and go, "Hey... what the heck... why isn't that number zero???".
There are some other big, big wins with ledger. The first is that you are working with a text file. As a programmer, this is massive. Why do I need a stupid GUI? A nice descriptive DSL is waaaaay more convenient. Ledger itself is just a reporting tool that takes the data that you enter into the file and answers questions that you give it (which forces you to think of appropriate questions, which in turn showed me what I didn't understand...) I actually use vim (there is a vim mode as well), but emacs org mode is unbelievably fantastic (I'm a converted emacs user) and probably worth learning emacs for. The mixture of ledger and org mode is probably the best possible interface for an accounting program.

The other really big win is that you can put your accounting in source control. I can not express to you the amount of ass-saving this has brought me. Every time I make a change into the ledger I commit the change to git. Real accountants (which I hire to take my amateur stuff and do real accounting with) aren't supposed to change things in their ledger. It's kind of a law or something ;-) They can only add things (including notations). I do the same thing with ledger and git. I can find out what the ledger said at any given date. And I have incredibly readable diffs.

This last point is so incredibly important that I could not ever possibly think of using GnuCash again. This is not to say that ledger isn't without its faults. There are also some competing programs that were inspired by ledger which are worth checking out (bean-counter is one and there is a haskel implementation whose name I forget -- hledger???). There are also some things you can not do in ledger. There is no integrated payroll calculator, or invoice tracker, or anything like that. However, since the DSL is pretty easy to generate, it's quite easy to write scripts to do pretty much everything you might want to do. For my company (me and my wife), it is perfect. I don't think I would want to power a large corporation on it. I believe the Software Freedom Conservency still does their accounting on ledger, though.

Hope that helps :-)