I see a few practical problems with this project as it is right now.
The first problem I see is that native USB is very difficult to work with. MOst of the USB I see (including where I worked) used a virtual COM port to make the USB appear like an serial port. Obviously this won't work for a USB key. Native USB that has interfaces with Windows directly is very difficult to work with and pull off. I don't think I've ever seen anyone do it yet. Maybe you can find an FPGA IP core made for USB keys that already does this for you. THat would be gold.
THe second is dynamic RAM controller which I, personally, find to be super scary to work with. Especially when you are implementing it yourself. Most micro processors have one built in to handle all the clocking and refresh and the "dual" part of the RAM. I have doubts a PIC could handle that on it's own. You might need to turn an FPGA into a DDR2 RAM controller (with your own synthesis code or find a free IP core online). Most FPGAs are BGA, but there are some out there that are still QFN packages. THey aren't massive, but I think they are big enough to handle the job. Just plop it in alongside your PIC. Compared to the USB, this part is easy (especially since free IP cores for a RAM controller exist online and you just download them). But realy, I think you should just use a microprocessor like an ARM that has a RAM controller built in and normally uses RAM. THen it would be just like a uC storing stuff in RAM and spitting it out over USB. With the PIC you are developing the RAM interface,, the USB, and the file system (the PIC) to bridge the two together all at the same time. With a uC, you are just developing two: the USB interface and the file system. But reading from the RAM itself should be the most natural thing to do with a uC that is meant to do that constantly during it's operation.
THe third is the components themselves. Unless you plan to use stick of RAM (which you say you will because it's cheaper) you still have the issue of the controller to contend with. If you buy one (if they do exist as discrete ICs rather than part of a uC) it's probably going to be a BGA packages. If you go with RAM ICs, well those are for sure going to be BGA packages.
An obvious one is the battery powering the DDR2 RAM, but you've made up your mind on that so it's a moot point.