Regarding the 1.x to 2.x transition, there certainly was a fair amount of criticism at the removal of a some options and functionality. But I think it's also fair to say that it was also fairly eagerly anticipated. GNOME 1.x had its fair share of UI inconsistency, segfaulting buggy applications, and options craziness, so there was also something to be gained by the UI simplification and application reworking. There were also a number of key improvements in GTK+: font rendering with freetype/fontconfig/pango replacing XLFDs, MVC widgets like the GtkTreeView. In other words, there was a lot of important, visible, technical improvement which greatly benefited both the user and the developer, and which led to improvements in all GNOME applications. As a developer, I couldn't wait to start using GTK+2.0. And while the desktop was a bit blander, it was still mostly usable, and more importantly, stable.
GNOME3, for me, doesn't bring anything by the way of major technical improvement. The loss of features and gross UI changes are not compensated by any important technical gains which benefit me as a user or as a developer, unlike for GNOME2.
The main change that I can see is that from what I read of the GNOME developers blogs, mailings etc., is that the main designer and developer focus is on the superficial, the interface. The easy stuff. There's little or no major focus on the hard stuff. The core libraries, inter-process communication, application frameworks. Can I copy and paste and share complex data between different GNOME applications? i.e. more complex than mere plain text and pixmaps. Can the applications share components, embed and drive each other? Where are the DCOM/OLE/DDE equivalents for GNOME which it promised in the early days? Last I saw, this died when the last bits of CORBA were excised from Gnumeric (it provided and could embed CORBA objects, such as graphs, which could have been shared with other applications). Yet there's lots of exciting new technology out there like ZeroC ICE, which is a modern replacement for CORBA. Is GNOME even considering these problems, let alone working on them? Look at the stuff Apple is doing with technologies like Core Data; and in the UI like Core Animation. These are fairly fundamental useful technologies which all applications can make use of. Is GNOME developing anything like this? While GNOME applications share the UI toolkit, there's very little commonality under the hood--they are all essentially separate programs which can't intercommunicate, and don't share much in the way of common libraries. GNOME ceded its technical goals in favour of superficial appearance, which is very much to its long term detriment.