As best i understand, dbus came about as an attempt at making the KDE only dcop into something that could be used across DEs. This to improve interoperability between them.
dcop worked beautifully; the only problem was that the gnome team had religious objections to depending on C++. It was never intended to be a system-level thing though, and that's where a lot of the problems come from; within a desktop session dbus actually works pretty well.