Memory leaks are something that were supposedly going to be a thing of the past with managed code. That didn't happen, but it is better than unmanaged code.
A quick first test. Open up task manager and look at the memory used when you application is not running. Then start the application. Does the memory consumption suddenly jump to 100%, or does it start low and climb steadily?
If it is a leak, meaning that as code runs objects are not being disposed of, then it should rise a little every time it performs a given task.
If it jumps to 100% right off the bat, then maybe a huge array of memory is being re-allocated.
If your application has a set of say... 6 tasks that it routinely performs... then hammer away at one of them. Write a little test app that will just keep hitting it with task#1, see if that causes the problem. Then task#2. and so on. Keeping an eye on the memory used. See if you can at least narrow down the problem to a given task. If they all do it, what methods do they all share?
It really just comes down to old-fashioned examination of the code. Where are you creating objects that aren't being disposed of?
You might also want to check out reviews of the various commercial applications that are supposed to help located such issues. Google should help with that.