@Burken:
So if my VLAN 10 sends DHCP broadcast the Switch will TAG the broadcast packets as VLAN 10?
Not quite, pfSense tags the frame, and that tells the switch which ports should 'see' it. Once it knows what port the frame will be sent out, it checks if it should be sent tagged or untagged (this is the 'egress' option). Since your ISP port was untagged in my example, the tag would be stripped at this point. Your ISP never sees the VLAN information, and when the ISP DHCP server replies, the reply is not tagged. When an untagged frame arrives at a port, the switch assigns that frame to the VLAN you set in PVID for that port. This is the problem with my example - even though you have separate VLANs for traffic leaving pfSense, the return traffic from your ISP will all go to one VLAN.
So GruensFroeschli comes in with some good thinking to solve it. The extra switch and cables in his example gives you a way to receive the replies from your ISP through separate VLAN-switch ports, so you can assign them the proper PVID. Obviously it wastes some ports and you need a cheap switch, but I think it should work. However be careful when you're configuring this, with the switch<=>switch links you could easily end up with MAC addresses appearing on multiple ports which will confuse the heck out of the 'dumb' switch and could also result in switching loops and other oddness. Each VLAN switch port should be assigned a VLAN, that should be its PVID and it should be the only VLAN it is a member of, with untagged egress. Though really, given the number of switch ports this solution eats, it's easier and maybe cheaper to just add physical interfaces, unless you have half a dozen free ports on your VLAN switch.