Hi:
You have a couple of options.
If you stay with the Layer 2 access design, you can at least ensure that you implement per-vlan STP in an aggressive manner. It's no secret on how to do this. Just search Cisco's Best Practices web link for STP. You may also want to keep your vlans to a small diameter. IOW, dont span any particular vlan across 10 different switches, if you dont have to. Keep it tight.
Choice 2 is to create a routed access layer with L3 uplinks to a routed distribution/core layer, instead of L2 trunks. There are some restrictions that present themselves when doing this, but it is definitely doable. It's more easily done in a campus environment than it is in a server farm due to the L2 adjacency requirements of NIC teaming and/or bridged load balancing.
HTH
Victor