Another trade-off is that, though an OSPF-based device can immediately reroute traffic upon detecting a downed link, it may not always get the information. If you have another firewall or switch between your core router and the aggregator switch, for example, and the router goes down, the link state will not change on the aggregator switch because it is not directly connected. Then you're dependent on OSPF's "hello" protocol, which checks the status of its neighbors. By default, a hello message is sent every 10 seconds and when four replies are missed, OSPF considers the neighboring device down.
It's best to have direct connections to avoid this; you can even change the default timer settings to provide faster convergence. You may also have to pay extra to add OSPF to aggregator switches, as some vendors only provide it as an option.
You can remove more single points of failure as you work toward the edge of the network. You can, for instance, connect each workgroup switch to dual aggregator switches, so if one switch crashes, you'll have a backup. This also means each workgroup switch will need dual connections--one to each switch--which adds further redundancy. You should have four cables, usually fiber, depending upon the distance, going from the core to each pair of aggregator switches.
A simple way to add redundancy between any two switches is to use the IEEE 802.3ad protocol. This trunking protocol takes multiple connections and combines them into one virtual pipe, to increase bandwidth. Packets are load-balanced across the connections so, if one of them goes down, traffic is directed to the remaining connection or connections.
The downside of 802.3ad is there has to be a connection between two switches--you cannot have two connections on one switch going to two different switches. You can, however, have two connections from an aggregator switch to two different cards on the core switch, which at least gives you redundancy at both the card and port levels. Some vendors let you use 802.3ad at the aggregator switch and plug into two different core switches that emulate one switch.