I believe the technique suggested in the OP was originally invented for FreeBSD password hashes. A similar technique is also used for WPA Personal passphrases.
The issue with mobile devices and JavaScript is not a small one. I tried to implement a doodad that would convert a WPA passphrase to a hex key in JavaScript and it took longer than the browser's timeout to perform the computation (4096 iterations of SHA1 using a SHA1 hash implemented in JS). And using a less-transformed version for weaker platforms won't work because attackers will just go after the weakestly-transformed version.
Another technique that might be nearly as good or better would be to make it difficult for an attacker to determine if they have the correct key. Use a bijective compressor such as BICOM on the file before encrypting it, whitening the first part of the file since that will have the least entropy. BICOM actually does this natively. You can find a description at
http://www3.sympatico.ca/mt0000/bicom/ . I have no idea how well this would work in practice, but at the very least forcing the attacker to decompress the data (and to decrypt the entire file, say via a package transform) in order to determine if he or she has the correct passphrase could help a lot.
Of course, if you use a long passphrase instead of a password, you can get even better protection, since every additional character probably about quadruples the attack time (assuming two bits of entropy per character in common passphrases).
By the way, loving the product so far. If the Android version doesn't suck too badly I'll be going premium.