Thank you for your reply. The ImageOpened event handler is being hit (I verify that with a breakpoint). When I created the BitmapImage by passing the URI to the constructor, it was not, but using the code as I've posted it here, it is. I have performed tests wherein I use the loaded BitmapImage in a regular Image control and that seems to work as you would expect. (That is to say, you see the image in the control.)
I have witnessed in my experimentation that if I create the BitmapImage (passing the URI to the contructor), then use it as the ImageSource for a standard .Net control (like the Image control), the ImageOpened event doesn't fire if I don't actually put that .Net control somewhere into the layout so it can be drawn. So I think I can generally verify what you're saying about Silverlight not downloading the image until it's time to show it in some cases. But, as I say, in this case I think I do have a valid BitmapImage by the time I make it the image source of my PictureMarkerSymbol. That has led me to think that I am just missing a step somewhere.
Essentially, what I am trying to do is create a graphic whose picture is retrieved from a URL (rather than being defined by a resource in my XAP). It seems as though the process I'm using should allow me to do that, but I am wondering: Can I actually do this with the API? If so, is there perhaps a code sample somewhere that demonstrates how I should be going about it?