We still have have a flat L2 campus design (roughly standard cisco access/distribution/core design without the L3 core). But we want to change, because with redundancy the spanning tree gets both too complicated or is too inefficient. And even with the new spanning tree algorithms (MST, Rapid PVST) it is too unstable. An example: You have to shutdown a backbone link for maintenance, this can affect (for seconds) the whole network. A partial solution is to use all channels, such that Spanning-Tree rarely ever changes. We didn't have any L2 loops as far as I can remember.
On a side-note: Spanning-Tree MST is good within a VTP domain. I wouldn't do it again with devices not in that VTP domain (or not supporting VTP).
So no, it is not a good design. But if the network is really simple, it is something to consider. Keep it simple and stupid!
I was also thinking about a minimalistic MPLS backbone with PE routers only... need to think about it if it makes sense.