First, I think this is an excellent question for this forum, so thanks for posting it. I'm going to use a mix of computer analysis with stockfish and crafty, and the chesstempo game database to respond.
Your main question: Is Ulvestad playable for black? I think is a definite yes. There are many options unexplored still, but I think even in your specific game black can at least draw with 20. ... f5
to counter 20. Bd3
, and it's not a picnic for white, either--they have to play fairly precisely to keep it even. I'll get back to this at the end.
To avoid making this overly long (I can tell it's going to be long!), I'll just point out some of the unexplored options you don't cover in the question. For example, move 8 isn't set in stone with 8. cxd4, there are also:
8. Ne4
8. Nxf7
8. h4
But we'll continue down your line with 8. cxd4 Qxg5 9. Bxb5+ Kd8
, after which the options for white look like:
10. O-O Rb8 11. Bc6 exd4 12. d3 Qf5 13. Re1 Nf6 14. Nd2 Qxd3 ... (+0.80 D25 - stockfish)
10. Qf3 exd4 11. Bc6 Nb4 12. Bxa8 Nc2+ 13. Kd1 Bg4 14. Kxc2 Qc5+ ... (+0.56 D25 - stockfish)
After 8. cxd4 Qxg5 9. Bxb5+ Kd8 10. O-O
there are another few potential options:

10. ... exd4 11. Bc6 Rb8 12. d3 Qf5 13. Re1 Nf6 14. Nd2 Qxd3 15. Nb3 Qxd1 ...(+0.60 D29 - stockfish)
10. ... Rb8 11. Bc6 exd4 12. d3 Qf5 13. Re1 Nf6 14. Nd2 Qxd3 15. Nb3 Qxd1 ...(+0.60 D29 - stockfish) (transposes to above)
10. ... Bb7 11. Qf3 exd4 12. d3 Qe5 13. Nd2 Bd6 14. g3 a6 15. Ba4 Qf6 ... (+0.72 D29 - stockfish)
10. ... Qg6 11. dxe5 Rb8 12. Nc3 Nf4 13. Qf3 Bb7 14. Qg3 Nxg2 15. d4 Nh4 ...(+.80 D29 - stockfish)
10. ... Bg4 11. Qb3 Nf4 12. dxe5 Bd7 13. Qg3 Qxg3 14. fxg3 Ng6 15. Nc3 Bc5+ ...(+.84 D29 - stockfish)
Again, we'll go with your line, 8. cxd4 Qxg5 9. Bxb5+ Kd8 10. O-O Bb7 11. Qf3
, to which there are a few ideas possibly worth looking deeper at:

11. ... Rb8 12. dxe5 Ne3 13. Qh3 Qxg2+ 14. Qxg2 Nxg2 15. d4 Be7 16. Be2 Nh4 (+0.72 D26 - stockfish)
11. ... exd4 12. Re1 Be7 13. d3 Qf6 14. Nd2 Rb8 15. Bc4 Nb6 16. Qxf6 Bxf6 (+0.76 D26 - stockfish)
11. ... Qf4 12. Qxf4 exf4 13. Nc3 Nb4 14. Rb1 Bd6 15. d3 Nc2 16. d5 Nd4 (+1.01 D26 - stockfish)
Again we'll go with your line, 8. cxd4 Qxg5 9. Bxb5+ Kd8 10. O-O Bb7 11. Qf3 Rb8 12. dxe5 Ne3 13. Qh3 Qxg2 14. Qxg2 Nxg2 15. d4
, and again black has several responses to explore:

15. ... Be7 16. f4 Nh4 17. Nc3 Nf3+ 18. Kf2 Nxd4 19. Rd1 c5 20. Be3 Bf3 (+0.84 D26 - stockfish)
15. ... f6 16. Be2 Nh4 17. f4 Bb4 18. Nd2 Nf5 19. Nc4 Ke8 20. Rd1 fxe5 (+0.92 D26 - stockfish)
15. ... Nh4 16. Bg5+ Be7 17. Bxh4 Bxh4 18. Nc3 Bf3 19. Rab1 Rb6 20. Bd3 Kc8 (+1.01 D25 - stockfish)
15. ... Kc8 16. f4 Nh4 17. Kf2 c5 18. Be3 Bg2 19. Nc3 Bxf1 20. Rxf1 cxd4 (+1.05 D25 - stockfish)
We're almost to the line you left us, but you can see you probably had several other possibilities. We'll continue with the line: 8. cxd4 Qxg5 9. Bxb5+ Kd8 10. O-O Bb7 11. Qf3 Rb8 12. dxe5 Ne3 13. Qh3 Qxg2 14. Qxg2 Nxg2 15. d4 Nh5 16. Bg5+ Be7 17. Bxh4 Bxh4 18. Nc3 Bf3 19. b3 Rb6 20. Bd3
, which presents us with an interesting position.

It looks like my f5 idea was pretty good, as it seems to be a solid draw for black if both sides play perfectly (as far as I can tell). Interestingly enough, computers don't tend to see f5 until they get 30 deep or so. The goal being to get the h8 rook involved ASAP. If white slips up, they can be in for some pain.
There are two reasonable responses to 20. ... f5
:
21. Ne2 Rg6+ 22. Ng3 Rf8 23. Rae1 (+0.32 D28 - stockfish)
21. Bxf5 Rc6 22. Nd1 Rf8 23. Ne3 Bg5 24. Bg4 Rg6 25. Bxf3 Bxe3+ 26. Kh1 Bxd4 (+0.00 D28 - stockfish)
The rest look like probable bad news:
21. e6 Rxe6 22. Bxf5 Rc6 23. Rac1 Rf8 24. Bd3 Bg5 25. Rc2 Rf4 (-0.92 D28 - stockfish)
21. exf6 gxf6 22. Bc4 f5 23. Rfe1 Rg6+ 24. Kf1 Rg2 25. Re3 Rxf2+ (-1.53 D28 - stockfish)
21. Rfe1 Rg6+ 22. Kf1 Rg2 23. Re3 Rxf2+ 24. Kg1 f4 25. Rxf3 Rxf3 (-2.14 D28 - stockfish)
21. Rfd1 Rg6+ 22. Kf1 Rg2 23. Rd2 Rxh2 24. Ke1 Bg5 25. Rdd1 c6 (-2.70 D28 - stockfish)
I let stockfish think about this position for several hours, and when it gets to about 30-31 deep, the score for both of the best moves dwindles to 0.00 or 0.08 (which indicates a likely draw). I played out several scenarios which involved different colored bishops and rooks that had easily defended pawns, but that couldn't obviously make progress. Or Rook+Knight vs Rook+Bishop. There were a few times that black had a bishop traded for a couple of pawns, but couldn't do anything with it. Never got to a 6 piece EGTB position--always too many pawns leftover. If someone can find a win for white with 20. ... f5, I'd like to see it!
Update 6-20-2012
21. Bxf5
seems to be a bad choice after 21. ... Rc6 22. Rfc1 Rf8
.

I haven't looked at other moves other than 22. Rfc1
deeply yet (such as 22. Rac1
and 22. Nd1
), but white doesn't have many good options at 23.
23. Bxh7
looks like it has potential, but after 23. ... g6
the bishop becomes hard to use. 23. Bd3
is in second place so far, 23. Bd4
is in third, and 23. Bb1
is in fourth, but they all score negative with 30 depth.
21. Ne2
looks like it offers white a few chances for draw by repetition several moves in. This line, for example (I need to check some of the others for black to see if there's something better than 21. ... Rg6+
, but that seems unlikely): 21. ... Rg6+ 22. Ng3 Rg5 23. Rac1 f4 24. Rc3 Rf8 25. Rfc1 c6 26. Bb5 fxg3 27. hxg3 Bxg3 28. fxg3 Rxg3+ 29. Kh2 Rg2+ 30. Kh3 Rg6 31.Bxc6 Rh6+ 32.Kg3 Rg6+ 33.Kh3
ends with a pretty straightforward draw by repetition drawish looking position:

Another update: 21. Ne2 Rg6+ 22. Ng3 f4 23. Rfc1 Rg5 24. Rc3 Bb7
looks promising for black.
Update: Here is some analysis, if anyone is interested: http://mongochess.skeweredrook.com/ulvestad-variation