I've had a quick look at your code and it seems OK (actionscript anyway).
What I would say is to try different methods of embedding the swf. Ages ago (so I can't remember all the details) but I was testing the external interface with different browsers and sometimes it would work in IE, but not firefox, and if I tried a different method of embedding the swf it would work in firefox but not IE or just IE 6 and not 7!
It was very annoying. Anyway the only method I found that worked in both of the major browers at the time (chrome was out) was to use the HTML that gets created from flexbuilder when you publish your app. I did of course have to modify it a bit (because we use cocoon & xsl's) but it worked.
(since then I think swfobject has been improved, i might try that as well if I was you)
I've posted the HTML template from flexbuilder on http://pastebin.com/f79b5b3f3 It will require the AC_OETags.js file (http://pastebin.com/f3937a336) and the playerProductInstall.swf (you may need to download flexbuilder to get this).
code for comment below
<mx:HTTPService id="mySerivceCall"
url="{'myPHPFile.php'}"
result="resultHandler(event)"
fault="faulthandler(event)"
showBusyCursor="false"
resultFormat="e4x">
<mx:request>
<time>{new Date().getTime()}</time>
</mx:request>
</mx:HTTPService>
I always add the time to a httpservice, makes sure that it doesn't get cached (which IE is very bad at). Just stick in any other params into the request section and the result format just tells flex that the result is XML formatted in e4x which makes handling XML very straight forward.