So, apparently BIS didn't set the large address aware flag on the executable, so the error is really that ArmA is running out of virtual memory space, not that the page pool is exhausted (i.e. out of memory).
This happens frequently because when D3D9 resources are allocated in the SYSMEM or MANAGED pools, they are shadowed in main memory. This shadowing takes a significant slice of the virtual address space, which is already fragmented by DLLs and other things.
I run Vista x64 with 4 gigs of RAM and a 768 MB 8800 GTX, and I was still getting the "Can't create surface.." crashes after upgrading to the 1.08 release. What I did was to manually enable the LARGEADDRESSAWARE PE flag of the ArmA executable. This allows D3D9 and other libraries to allocate larger, continuous ranges of virtual memory because the address space is twice as large.
BIS should enabled the LARGEADDRESSAWARE linker flag for the next patch! I believe this will solve the memory errors for most high-end graphics cards, and it is virtually harmless on older machines.
Until then you can enable it yourself.
Disclaimer: for those of you who would like to try this, please note that it might flag your executable as different and thereby make it unsuitable for online play. No warranties, and all that. Take a backup of the executable.
Download the Windows Platform SDK and install that. If you have a Visual C++ installation, that's fine too. Now run "editbin /largeaddressaware arma.exe" in the game directory, and you should be good to go. You can verify that the flag has been set by running "dumpbin /headers arma.exe".