Unreachables are used for PathMTU with VPN tunnels, so be careful about blocking that.
I dont block any of them inbound except echo, which I allow only to certain servers. The only real reason I block echo is because it is a trigger for many worms to start their infection process. Blocking echo doesnt do much good against a determined attacker..he'll likely figure out there is a system there anyhow.
Outbound I only allow echo, echo reply, unreachable, and time exceed.
A better option instead of blocking all ICMP might be to inspect the types you need to make sure it is legitimate for the type specified. Data can be encapsulated into an ICMP packet, and if you just make sure the ICMP packet conforms to RFC's then you should be ok.
Oh, and be careful about blocking fragmented echo's over VPN tunnels. MS Active Directory 2003 uses something like a 2500-byte ping to check the status of a host before pushing a group policy, since that wont fit in a single packet it has to be fragmented, and if you're blocking frag'd echos then you wont get group policies at the other end of the tunnel.