Nah, it's not _totally_ impossible..
(or it is if you intend to do a _small_ program)
But i'll give you a couple of hints, things you need to do in order to get this working.
First of all, you would need some kind of x86 instruction interpretion, which then
could generate approperiate ARM code, this is not a simple matter because the x86 is a CISC and has lots of instructions ARM doesn't have.
You would also ofcourse have to do some poking around of offsets, and work around the fact that you cannot have 32bit immediates within the code without using a PC relative load. (that will for sure screw up some jump offsets etc, lots of things to keep in in mind).
And the decide if you would like to link all DLLs statically with your new built FXE.
(in any case you would need some kind of bootup thingie on the GP32 taking care of memory mapping, since 8mb will not be enough to hold all DLL's, data etc) you should read up on virtual memory systems aswell.
This was the easy part, and i might have left some important steps out of it but i'm sure you will notice them when you get there.
What you need to do next is implement the win32 API for GP32, GDI etc.
That is a shitload of work, but not impossible i guess.
Then you would need some preemtive multitasking kernel running in the background, again, lots of work.
Well, if you have come this far, it's time to implement some of the more fun DLL's like DirectX, which i assume you would like to have, the source is ofcourse not open, but 'how hard could it be' to just implement the whole API?
Then there is the thing with emulating the floating point unit, and the SSE ofcourse.
The ARM CPU has some tricks for this, you can leave a undefined instruction in the code, and it will generate an exception for you where you could handle the instruction you would like to emulate, it will ofcourse be slow as hell but.. i think it's the easiest way of doing it.
Well, in short, not impossible at all, some might say it's a piece of cake.
Good luck!
---
mithris