You should have different subnets for each Vlans, yes?
If so, simply set 3 queues under the traffic shaper in order of priority and use PRIQ (note, this is only applicable to pfSense 2.0).
Assign all traffic to or from each Vlan (by specifying the source or destination subnet) into the individual queues using the Vlan's interface tab (for outbound) and the floating tab (for inbound).
eg. Setup 3 queues (qVLan1, qVlan2, qVlan3 with priorities of 3, 2, 1 respectively). Set qVlan3 queue to be the default queue since this is the lowest priority queue anyway.
Set the default rule under Vlan1 tab to pipe all traffic to qVlan1 queue; The protocol/ destination will be any and the source address will be the subnet of Vlan1. Go to floating and set the same except that the Protocol/ Source will be any and the destination will be Vlan1's subnet. Also, ensure that the interface is set to WAN (this will accomodate for inter-vlan routing at higher speeds with other rules)
Do the same for Vlan2 and Vlan3.