well loading consists of 2 parts:
1- reading the file
2- creating the Direct3D(2D?) resource
what you can do is avoiding the reading part, i'm afraid this is a little bit advanced but here's the idea:
you will have 2 threads, if not more, 1 for your typical game code, and the rest are used for reading files, basically, you CAN'T create the resource in any thread except the main thread, so you will tell the main thread that you (the loading thread) have read the file and info is ready to be used to make the resource, so you, during the typical game loop in the main thread, will spot the signal and then create the resource, creating the resource is not very heavy so it might not impact the performance by a great amount, though, i'd say only create 1 resource per loop max, so you won't have huge fps drops
i really am not sure if you could do this in GDK - someone with a little bit more of experience could answer: "can you create a GDK image from raw pixels in memory?", as for reading, i don't think there are DirectX9 helper functions for this, but i'll take a look
good luck, this would be a very thing to have in your game