var edit = document.createElement('input');
здесь input уже создался
controls.appendChild( edit );
а здесь он уже добавлен к dom (если controls добавлен)
и нету необходимости ни в каких setTimeout
и отдельная функция не нужна, писать вроде немного: edit.focus()
даже проверил в ie 6, ie 7