Oh that's right I was thinking GET data. I ran into this limit when developing some AJAX thing.
So the answer is, as long as you use POST, theoretically there is no limit... at some point though you will run into script timeouts, server timeouts, file size limits etc.
I just tested with 800k chars and it worked. It won't include newlines though. Try for yourself:
# filename: post.php
<html><body><form action='post.php' method='post'>
<input type='text' name='foo'/><input type='submit'/>
</form></body></html>
<?php
if (isset($_POST['foo'])) echo 'last post:<br/>'.nl2br(chunk_split($_POST['foo']));