XSLT uses XPath and this requires that the whole XML document be maintained in memory. Thus the problem of insufficient memory is by definition.
There are simle rules to approximate how much memory is needed and one of them says
5 * text-size.
So, for a “typical 1.5GB XML file” 8GB RAM may be sufficient.
Either split the document into smaller parts or wait for an implementation of XSLT 2.1, which defines special streaming instructions. In the meantime one may use the latest (commercial) version of Saxon, which implements extensions for streaming and successful processing of 64GB document has been reported on twitter.