I had my share of issues with this and what I found it's typically more than one thing so just do it all correctly and be satisfied its working.
Here are some things to consider, I'll leave out the technical explanations because it can be done better by someone else.
1. Temperature: Beer, line and tap all need to be the same temp and cold. If the line and tap are warmer than the beer, you will always get a foamy first pour and also between servings until the beer cools the lines and tap again. The reverse can be true too, I have a lot of foam issues for the first 24 hours with store bought kegs because they keep their beer around 50 degrees and my equipment is set for 40. To solve the line and tap issue I mounted my taps right into my keezer so they stay cold except for the outside part of the faucet.
2. Over Carb'ing: My home-brews are always carb'd perfectly for my system because I hook it up at serving PSI (10-12) and just leave it for a couple weeks. If you are force carb'ing at a high PSI or doing the shake method you risk over carb'ing and will get foam.
3. Dirty taps: Take them completely apart and clean them really well. You'd be surprised what you might find in there.
4. Balanced System: Each foot of line adds resistance and counters the the serving PSI. You want your beer to leave the tap at 0'ish-1 PSI so you need enough tubing to reduce the pressure at the tap to virtually nothing. 3/16ID beer line reduces pressure by approx. 2 PSI per foot. 10-12 PSI at 40 degrees gives me the amount of CO2 volume I want so I have about 5 feet of beer line between my keg and tap which works out perfect for me. I also try not to let the beer line dip below the fluid level of the keg by coiling it up on top. Not sure if it makes a difference but I do it anyway.
If you want to keep force carb'ing at 20, I'd suggest lowering it back to 10-12 when done, then release some pressure on the keg to get it to 10-12, and maybe do that again each day for a couple days until the beer pressure regulator pressure are equal.
Im still new to this and hope I gave you good info but if not others will correct me I'm sure
. Also I'm sure others can give you way more technical explanations for this but paying attention to those things helped me.
David