A couple of things that can make this easier on a long re-route.
If you miss a fix or airway, leave space and keep going. Once the controller finishes reading the re-route, ask him to repeat the part you missed, i.e. 'Say again the fix after [fix or airway]' or "Say again the routing between [fix1] and [fix2]". Once you have the complete route copied, then proceed with the full readback.
When reading back the route, it is not necessary for you to spell each fix phonetically or double-up with the fix name and spelling, i.e. "Spinner, Sierra, Papa, India". The controller has the route printed out/displayed in front of him, he isn't copying it down as you read it back. He can keep up with you on the readback. Since you've already verified anything that you were unsure of, read back the full wrote quickly, clearly, and efficiently.
Lastly, write it down. Don't try to program your RNAV as the controller is reading the routing. You'll get behind.