The target sound have a 10 seconds silence at its end, so the end event is sent very late. For a strange reason the end event doesn't seem to contain the right code (code = 0), I don't know why. I don't use set_endevent often, especially with recent versions of pygame, and I'll have to check if my old code using it still works with pygame > 1.7.1.
By the way, and this is just my opinion, I don't like how pygame has evolved. The best version of pygame is in my opinion 1.7.1. The later versions have numerous regressions and unnecessary improvements, and are not strictly compatible (even if it claims to be "very compatible"). For example, with a recent pygame (and Windows XP), the bird in the example 3 sings irregularly, while with pygame 1.7.1 and Python 2.5 the bird sings regularly. It seems that the sound doesn't start when the program requests it anymore. It just starts sooner or later, and doesn't even returns a channel systematically. This is not a serious problem for visual games where sound is optional. But if you write an audio game testing reflexes and every sound doesn't start when you want, you are in trouble. The 1.7.1 Windows binary version of pygame, while officially deprecated, without a link pointing to it, and incompatible with the new installer, is still available on the official site at the following url:
http://pygame.org/ftp/
Additionally, the sounds doesn't stop when you want with pygame > 1.7.1
I'll have to check if pygame > 1.7.1 have the same trouble in Linux.
Back to your game, I have removed the silences from the sounds (important) and converted them from stereo to mono (optional).
I have also changed the code a bit. Examine it and try it.