Having dabbled quite a bit in 64-bit assembler programming, I would say that you are taking a very simplistic view of memory usage. It is true that any absolute addresses will take up twice the space on a 64-bit system but, in reality, programs contain very few absolute addresses. Most memory access, e.g. local variables in functions, is via the stack or values stored in other registers. This does lead to a slightly increased memory usage (although nowhere near two times) but is offset by other factors:
1. The 64-bit calling convention passes the parameters to most functions in registers rather than using the stack. This can add up to quite a saving.
2. The eight extra general purpose registers available in 64-bit mode allow for much reduced memory access. Not only does this save space but is considerably more efficient than storing transient data in memory.
3. Similar considerations apply to floating-point and multimedia registers.
Data storage, of course, is exactly the same on both systems. A 64-bit address can address memory in 8-bit increments, just as 32-bit addressing can.
The total result of these factors, in my experience, is little or no increase in RAM used (possibly even, in some cases, a decreased memory requirement) and considerably more efficient programs. In addition, of course, one has the extra address space available. Memory prices are falling all the time so even if it were true that a 64-bit program used (say) 1.5 times as much memory (which I am quite confident is not the case), the fact that you can address 16Gb or more, as opposed to the meagre 3Gb+ available to 32-bit Windows, far outweighs this.
As for the fact that 32-bit applications running in 64-bit Windows can only access 3Gb+ of RAM, that is true. But take two programs and that is 6Gb, three programs and it's 9Gb. I'm sure you get the picture. Under 32-bit Windows three applications running at the same time can only access about 3Gb RAM between them - an average of 1Gb each - whereas under 64-bit Windows they can each access 3Gb. Running multiple programs is not an uncommon scenario; indeed when you also take into account the operating system itself and its services you are always running a large number of programs at the same time.
32-bit has had its day (though I'm sure there are still some hardy souls sticking to their 16-bit operating systems) and the sooner we all switch to 64-bit, and force software and hardware developers to fully support it, the better.