My first question would be why are you building the element using scripting. The second question would be why are you building it innerHTML style instead of the DOM (assuming scripting is appropriate)... the third question would be about the use of EMBED (which there's no need for) which the scripting isn't targeting to start playing (so it should work in no versions of IE)... and of course as always since that appears to use jquery bloat, I'd swing a giant axe at that nonsense as well.
First, I'd put the player where it belongs -- it's content, get it in the markup using a method that actually works cross browser :
<param name="movie" value="/player/template_maxi_0.6.0/player_mp3_maxi.swf" />
<param name="bgcolor" value="#000000" />';
<param name="FlashVars" id="hMusicFlashVars" value="" />
Which gives you a valid target to do whatever it is your scripting is trying to do.... which appears to be a content swap which I'm not sure IE (or Opera) will pay attention to on a flash element -- and that appears to be something that should be handled using the dom on the elements property instead of forcing a reflow. Give the param an ID and swap it's value instead of replacing the entire content.
Since all you're doing is changing if that one value is present or not.
It could also be that since you do NOT have autoplay set for player_mp3_maxi.swf, the flashvars isn't gonna do jack...