I don't have a solution for the scrlttr2 class, although I think if you beat this answer with the letter class, you should be able to get it to work ...
Something like
\usepackage{everyshi}
\AtNextShipout{\global\rightskip=-2.5cm\relax}
can handle the simple cases of single page letters and letters where the first page break occur at a paragraph. As I see it the crux of the problem is to handle the case when the first page break occurs in the middle of a paragraph. David's answer handles simple cases by defining a parshape and keeping track of where you are. This solution works great if you start the parshape at the top of a page. The problem with letters is that there is variable amounts of "stuff" at the top of the page. This is especially true for the scrlttr2 class, which is why I cannot get it to work. Butchering David's code to handle a pages with variable numbers of lines (the first page of the letter class with your margins has 54 lines) and a variable width gives
\newlength{\textwidth@wide}
\setlength{\textwidth@wide}{\textwidth}
\addtolength{\textwidth@wide}{2.5cm}
\newcounter{nlines@first}
\setcounter{nlines@first}{54}
\def\shp#1{%
\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\edef\pshape{\pshape 0pt #1 }
\ifnum\@tempcnta<\value{nlines@first}
\repeat
\advance\@tempcntb\value{nlines@first}
}
\def\reshape{%
\begingroup%
\@tempcntb\z@%
\def\pshape{}%
\shp{\textwidth}\shp{\textwidth@wide}%
\def\par{\ifhmode\\\fi\hspace*{\parindent}\ignorespaces}%
\parshape\@tempcntb\pshape%
}
If you never used \opening then the solution is very easy
\usepackage{etoolbox}
\apptocmd{\letter}{\reshape}{}{}
\pretocmd{\endletter}{\endgraf\endgroup}{}{}
\opening does a whole lot more than just add the opening (e.g., it adds to and from addresses and a date). To handle this, we need to undo the change to the letter environment and modify \opening.
\pretocmd{\opening}{\endgraf\endgroup}{}{}
\apptocmd{\opening}{
\ifx\toaddress\@empty
\else
\expandafter\count@lines\expandafter{\toaddress}%
\addtocounter{nlines@first}{-2}%
\fi
\addtocounter{nlines@first}{-4}%
\reshape%
}{}{}
\patchcmd{\opening}{{\raggedleft\@date\par}}{\addtocounter{nlines@first}{-2}{\raggedleft\@date\par}}{}{}
\patchcmd{\opening}{\thispagestyle{empty}}{\thispagestyle{empty}\addtocounter{nlines@first}{-4}\expandafter\count@lines\expandafter{\fromaddress}}{}{}
where we define the helper function
\newcommand{\count@lines}[1]{\@count@lines@#1\\@@@}
\long\def\@count@lines@ #1\\#2@@@{%
\ifstrequal{#2}{}{}{%
\addtocounter{nlines@first}{-1}%
\@count@lines@#2@@@%
}%
}
for counting the number of lines in the "to" and "from" addresses.
Putting it all together into a MWE
\documentclass{letter}
\usepackage[left=3cm,right=4.5cm,bottom=3cm,top=2cm]{geometry}
\usepackage[nopar]{lipsum}
\setlength{\parindent}{1cm}
\usepackage{everyshi}
\AtNextShipout{\global\rightskip=-2.5cm\relax}
\usepackage{etoolbox}
\makeatletter
\newlength{\textwidth@wide}
\setlength{\textwidth@wide}{\textwidth}
\addtolength{\textwidth@wide}{2.5cm}
\newcounter{nlines@first}
\setcounter{nlines@first}{54}
\def\shp#1{%
\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\edef\pshape{\pshape 0pt #1 }
\ifnum\@tempcnta<\value{nlines@first}
\repeat
\advance\@tempcntb\value{nlines@first}
}
\def\reshape{%
\begingroup%
\@tempcntb\z@%
\def\pshape{}%
\shp{\textwidth}\shp{\textwidth@wide}%
\def\par{\ifhmode\\\fi\hspace*{\parindent}\ignorespaces}%
\parshape\@tempcntb\pshape%
}
\pretocmd{\opening}{\endgraf\endgroup}{}{}
\apptocmd{\opening}{
\ifx\toaddress\@empty
\else
\expandafter\count@lines\expandafter{\toaddress}%
\addtocounter{nlines@first}{-2}%
\fi
\addtocounter{nlines@first}{-4}%
\reshape%
}{}{}
\patchcmd{\opening}{{\raggedleft\@date\par}}{\addtocounter{nlines@first}{-2}{\raggedleft\@date\par}}{}{}
\patchcmd{\opening}{\thispagestyle{empty}}{\thispagestyle{empty}\addtocounter{nlines@first}{-4}\expandafter\count@lines\expandafter{\fromaddress}}{}{}
\newcommand{\count@lines}[1]{\@count@lines@#1\\@@@}
\long\def\@count@lines@ #1\\#2@@@{%
\ifstrequal{#2}{}{}{%
\addtocounter{nlines@first}{-1}%
\@count@lines@#2@@@%
}%
}
\makeatother
\apptocmd{\letter}{\reshape}{}{}
\pretocmd{\endletter}{\endgraf\endgroup}{}{}
\address{W\\X\\Y\\Z}
\begin{document}
\begin{letter}{A\\B\\C\\D\\E\\F}
\opening{Hi,}
\lipsum[1-3]\par\lipsum[1-3]\par\lipsum[1-3]\par\lipsum[1-3]
\end{letter}
\end{document}

The problem with the scrlttr2 class is that \opening is more complicated, but I think if you find the height of everything that is shipped out before the letter begins, you could make this approach work. If not, you should be able to create a less general company letter head class around this approach.
\newgeometryafter the last paragraph of the first page (this insert also the page break,\newpageor another page break is not needed) – Fran Jul 31 '13 at 19:39flowframdoesn't work if the pagebreak is in the middle of a paragraph. – StrongBad Aug 04 '13 at 16:53geometrylimitations). – Fran Aug 04 '13 at 20:44