See the related question Can you help me fix this address?.
It should be pretty easy to adapt the code I gave in my answer to try upper and lower case for each letter in the address, and for each possibility, see if its checksum validates. The address you gave has 28 alphabetical characters, so there are 2^28 addresses to check, which is not too unreasonable.
I would not expect there to be any way that's substantially better than this brute-force approach. Since the output of a good cryptographic hash function should look random, there shouldn't be any "patterns" in the upper/lower case distribution for us to take advantage of.
There is a chance that more than one possibility results in a valid address. In that case, there would be no way to know which of them was the address that was actually intended (but if only one of them has appeared on the block chain, that should settle it.)