That's correct, a custom IPackageReader implementation enables your scenario.
You should derive you package reader from MemoryPackageReader (in FirstFloor.Documents.IO), which is an implementation of IPackageReader. The MemoryPackageReader class provides the base functionality of a reader where the package contents are built dynamically
in memory. This class is also used by the TiffPackageReader for showing multiple image frames of a single TIFF image. See
http://documenttoolkit.codeplex.com/SourceControl/changeset/view/80956#1905208 for the source code.
With the MemoryPackageReader you essentially build an XPS document on the fly. You need to return page XAML and image streams based on requests that are performed by the DocumentDataSource.
Let me know if you need more help.