<textarea rows="5" name="textarea"></textarea>
<script type="text/javascript">
document.getElementsByName('textarea')[0].onkeydown = function() {
this.rows = this.value.split('\n').length; //если нужно сохранять минимальную ширину, то можно удалить эту строку
this.style.height = this.scrollHeight+'px';
};
</script>