Here's one way to do it: First, create your output window like this:
CreateDocument[Dynamic[theGraphic], WindowSize -> {500, 500}];
CreateDocument has a lot of options (use Options, not all of them are listed in the Documentation article), I just added WindowSize here because you asked about it. Maybe you can set the window position as well, although I can't seem to find it right now. (But that would ensure that the output window can't be moved.)
Anyway, the output window will now update theGraphic dynamically, so you can do this:
theGraphic = ListPlot[RandomReal[{0, 1}, {20, 20}]];
Alternatively, if you want to change the behaviour of all Graphics objects, you could do this:
$Post = (If[TrueQ[Head[#] == Graphics], theGraphic = #;, #] &);
And now an expression like ListPlot[RandomReal[{0, 1}, {20, 20}]] will change theGraphic and therefore trigger an update in your plot window.
I'm not sure if this is what you were looking for... It's a rather clumsy solution but maybe it'll get you started.