Result

jQuery

$.fn.textarea = function(){
    function init(){
        //全体をラップする
        var $textarea = $(this).wrap('<div class="textarea"></div>');
        //要素を指定した他の要素の後に挿入
        var pre = $('<pre></pre>').html($textarea.val()).insertAfter($textarea);
        $textarea.bind('keyup change click focus',function(e){
            pre.html($textarea.val());
        });
    }
    return this.each(init);
};
$('textarea').textarea();​

css

.textarea{
    width:200px;
    position:relative;
    font-size:12px;
    line-height: 1.5em;
}
.textarea textarea{
    width:100%;
    min-height:100%;
    display:block;
    position:absolute;
    font-size:12px;
    line-height: 1.5em;
    padding: 0px;
    resize: none;
}
.textarea pre{
    display:block;
    min-height: 50px;
    font-size:12px;
    line-height: 1.5em;
    padding-top:1em;
    white-space: pre-wrap;
    word-wrap: break-word;
}​

html

<textarea></textarea>​

via

Self_resizing_textarea-rSq