The thing that initially jumps off the page at me is that you are working with images. If you do not do this correctly, you will leave the image open in memory (or even multiple copies if you do your variables wrong) and this will cause memory issues. I built an app that had a similar issue with memory. I traced it down to one place where I improperly opened an image in my code. That one error would make my application choke. To trace down these memory issues, I would recommend that you look at how to open images without leaking memory and then ensure that every place you open those images conforms to these best practices. If you still can't find something, try a memory profiler. Here is a great one that has a free demo:
http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/[
^]
As to why this works on 32-bit when it doesn't on 64-bit, I would say that it could be because of how the application is compiled (32-bit vs. AnyCPU). I don't think this is the real problem. I believe your application is leaking memory either way and the 64-bit computers are just the ones showing it. If not, that memory profiler would point out the issue with the 64-bit computers.
Finally, you are mixing two different pieces together here. Memory and CPU are not the same thing. Having several cores will not help/harm a memory issue. Memory (RAM) is for volatile storage of items (data that will be destroyed soon like an image that you are working with until you save it to disk) while the CPU (cores) is for calculations (identifying how to transform the image). A faster CPU will reduce memory issues in that it will allow certain things to be dumped out of RAM faster because they are processed faster. However, in general, these are two separate topics. In your case, the issue is memory (RAM), not processor.