Thanks to the little side-track started by Morgan, and the matrix manipulation code by Aras i now have a small script to create large screenshots. It actually generates a series of screenshots that need to be manually stitched together afterwards, but it works.
Like Nicholas mentioned, this approach doesn’t work well with glow and other Image Effects.
So, the thing I want to get working now is some kind of automatic stitching of the individual screenshots. I’m thinking this needs to be done in a plug-in where I can create a large image file on the HD and paste the smaller ones into that. Anybody up for it? 
The code to generate the smaller screens look like this. To take a screenshot simply set takeScreenshot=true. the scale variable determines how big the resulting image is compared to the original, but it’s exponential so a value of 2 gives an image 4 times larger. It should be attached to the camera
using UnityEngine;
using System.Collections;
[RequireComponent (typeof (Camera))]
public class LargeScreenshot : MonoBehaviour {
public int scale = 2;
public bool takeScreenshot = false;
private float left,right,top,bottom,w,h = 0;
private float timeScaleReset = 1.0f;
private bool takingScreenshot = false;
void Update () {
if(takeScreenshot){
if(!takingScreenshot)
StartCoroutine("TakeLargeScreenshot");
takeScreenshot = false;
}
}
void LimitsFromCameraProjectionMatrix(){
Matrix4x4 m = camera.projectionMatrix;
w = 2*camera.nearClipPlane/m.m00;
h = 2*camera.nearClipPlane/m.m11;
}
IEnumerator TakeLargeScreenshot(){
takingScreenshot=true;
LimitsFromCameraProjectionMatrix();
Camera cam = camera;
//stop time
timeScaleReset = Time.timeScale;
Time.timeScale = 0;
//Take partial screenshots
int x = 0;
int y = 0;
int i = 0;
int n = scale*scale;
while(i<n){
//Set up projection matrix
left = x*w/scale-w/2;
right = left+w/scale;
bottom = y*h/scale-h/2;
top = bottom+h/scale;
Matrix4x4 m = PerspectiveOffCenter(left, right, bottom, top, cam.nearClipPlane, cam.farClipPlane );
cam.projectionMatrix = m;
//Capture screenshot
Application.CaptureScreenshot("screenshot_"+x+"_"+y+".png");
x++;
if(x>=scale){
x=0;
y++;
}
i++;
yield return 0;
}
//reset camera
cam.ResetProjectionMatrix();
//reset time
Time.timeScale = timeScaleReset;
takingScreenshot=false;
yield return 0;
}
Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far){
float x = (2.0f * near) / (right - left);
float y = (2.0f * near) / (top - bottom);
float a = (right + left) / (right - left);
float b = (top + bottom) / (top - bottom);
float c = -(far + near) / (far - near);
float d = -(2.0f * far * near) / (far - near);
float e = -1.0f;
Matrix4x4 m = Matrix4x4.zero;
m[0,0] = x; m[0,1] = 0.0f; m[0,2] = a; m[0,3] = 0.0f;
m[1,0] = 0.0f; m[1,1] = y; m[1,2] = b; m[1,3] = 0.0f;
m[2,0] = 0.0f; m[2,1] = 0.0f; m[2,2] = c; m[2,3] = d;
m[3,0] = 0.0f; m[3,1] = 0.0f; m[3,2] = e; m[3,3] = 0.0f;
return m;
}
}
/Patrik