To solve this problem, I'd recommend you build a paging or streaming system. This will allow you to dynamically load and unload resources as they are needed, keeping only what is necessary for the current area of your game on the GPU (instead of trying to keep everything there all the time).
If you have single resources (such as textures) that are overly large, you'll have to consider ways to break them up or reorganize them so you don't have single, monolithic, gigabyte textures floating around.
As to the background, or why you get this error:
D3DERR_OUTOFVIDEOMEMORY means that the graphics device is being asked to utilize more resources in a single frame than will fit in video memory.
D3DPOOL_DEFAULT for a resource means that that resource will be placed, based on the set of usage criteria you specify when creating the resource, in the most-appropriate memory pool. This is usually video RAM. The API will not manage anything in the default pool like it would with the
D3D_MANAGED pool (if the device is lost, you must release and re-create default-pool resources), if that is what you are wondering about.
The error you are getting means that your resources can't all fit. Keep in mind that
the size of a texture or any other buffer data on disk (and even in system RAM) does not necessarily equal the size of the resource once it gets to the graphics card. The data may be reorganized and resized to improve performance. It is unfortunately very difficult to get D3D to give you good statistics about on-GPU memory consumption and breakdown.
the driver may subdivide GPU memory into buckets for various uses ("this much" for texture memory, "that much" for vertex buffers). You don't necessarily get the full range of physical GPU RAM to do whatever you want with, so you shouldn't write against that assumption.
Direct3D may logically subdivide its memory; consider that even if a default-pool resource is not placed on the GPU, D3D keeps the CPU-side
D3DPOOL_DEFAULT memory pools distinct.
the previous two points will result in memory fragmentation, meaning that even if there is physically enough free RAM floating around to satisfy a request, it might not all be contiguous within the same logic pool and thus the request must be denied. This can, in fact, happen even within a single pool of memory (just like it can on the CPU side of things), resulting in a failed allocation.
there are other resources besides the textures or buffers you create from your own data on disk that D3D has to maintain on the GPU; they take up some space as well.
Because it's difficult to get D3D to tell you useful things about GPU memory usage breakdowns, you're likely going to need to assume the worst and take a broader approach to solving the problem (as outlined in the beginning).