You can't stitch together independently encrypted AES blocks, even with the same IV and key, because salesforce.com uses the CBC (Cipher Block Chaining) mode in AES. This means that each block depends upon the block before it, so the stitch point would cause a decryption error. You would have to decrypt the data using the same basic algorithm as encryption: encrypt blocks of data (e.g. 512kb blocks), and append them together. For decryption, you would have to split along 512kb boundaries, then decrypt and put them back together when you're done.
At some point, you have to accept the fact that no security is "perfect", and you should aim for security that is "nearly perfect." In fact, I'm fairly certain that the US government would consider use salesforce.com with Heroku to store top secret military documents if it didn't already have its own private, firewalled server clusters on dedicated point-to-point communication lines (assuming, of course, that the NSA hasn't poisoned AES with a backdoor that allows them to decrypt any message without a key).
You could chunk your data into < 1MB chunks and encrypt those wherever they originate. Then decrypt the chunks and concatenate them. I know that's not ideal since it's more work for you as the coder.
Full disclosure: I don't have experience with the decrypt function. This is just what I would do when faced with such a limit.