I'd say the following are some of CouchDB's advantages:
I like the document model because it matches up with most of the real world uses I think a lot of us have. It's easy to serialise objects to JSON, store them and then retrieve and deserialise when we need them back. With a column store, like Cassandra, you'd have some of the schema inflexibility that you get with a relational database.
As a document store, rather than a pure key-value store, CouchDB also lets you index and query the contents of your documents, rather than just pulling them out wholesale. So, if indexing/querying the contents of documents is important then it'll suit you better than something like Riak.
Against MongoDB, I think the main advantage is that CouchDB is architected in a way that makes it easier to grow a cluster. I mean, this depends on your precise needs. For example, with CouchDB you can add more and more nodes relatively easily and set up replication between them. That can be great for availability but you're replicating the same full data set on each node, so it might be so great for really large data sets.
You might want to look at CouchDB's spritual descendant, Couchbase. Couchbase is also open source and was created by many of the same team. It uses hash-based partitioning and clustering, similar to Cassandra, but retains the document model. So, it's pretty much linearly scalable but lets your work with schema-unenforced JSON docs.
I'd say Couchbase has a query advantage over CouchDB too, with a SQL-like language called N1QL. You also get k/v access and CouchDB-style views.
Another advantage that Couchbase has over CouchDb is built-in managed caching, which can give you fast responses.
Overall I'd say CouchDB can be good for smallish data sets but Couchbase will give you a lot more scope for scaling and has much richer query.