There are several different ways to attack this - note that the tool instructions will be slightly different depending on which version of Windows CE / Windows Mobile you are using.
Some questions to answer:
1. Is your application a memory leak leading to this low memory condition?
2. Does your application simply use too much memory at certain stages, what leads to this low memory condition?
1 and 2 can be explored using the Windows CE AppVerifier tool, which can provide detailed memory logging tools for your product. Other heap wrapping tools may also provide similar information (and may be more productive), depending on the design of your product.
http://msdn.microsoft.com/en-us/library/aa446904.aspx
3. Do you allocate and free memory very often in this process?
Windows CE, prior to OS version 6.0 (not to be confused with Windows Mobile 6.x), has a 32 MB / process virtual memory limit, which usually causes a lot of fragmentation problems. In this case, even if you do not have enough physical memory, you may run out of virtual memory. The use of specialized distribution blocks is usually a mitigation for this problem.
4. Do you allocate very large blocks of memory? (> 2 MB)
Associated with 3, you could just run out of virtual process memory space. There are tricks, somewhat depending on the version of the OS, for allocating memory in the general space of the VM, outside the process space. If you run out of virtual machine but not physical RAM, this may help.
5. Do you use a large number of DLLs?
Also applies to 3, depending on the OS version, DLLs can also quickly reduce the total available virtual machine.
Further jumping from points:
CE Memory Tools Overview
http://blogs.msdn.com/ce_base/archive/2006/01/11/511883.aspx
The mi tool of the target control window
http://msdn.microsoft.com/en-us/library/aa450013.aspx