Most SD cards natively support SPI communication but not UART so a direct UART connection isn't possible. I would recommend against the USB flash drive as there is a lot of overhead there that complicates things. And EEPROM is likely to use SPI or I2C so you're still left with the problem of having the one set of peripheral pins already in use.
Your best option given the chip you are using is to use the Peripheral Pin Select feature to map some available pins to be the 4 SPI pins you need. Section 11.6 of the datasheet has a good explanation of how to remap pin functions. That is probably the easiest solution.
One other approach you could possibly use is to use the UART to communicate with another PIC that has the SPI pins available but that, too, introduces a lot of extra overhead and complexity.