Me parece q con CSS es imposible... con Javascript se puede... te dejo el ejemplo
Código HTML:
<html>
<head>
<title>Hola</title>
<script type="text/javascript" language="javascript">
function resize(input) {
if (input.value.length == 0) { input.size = 1; }
else { input.size = input.value.length; }
}
</script>
</head>
<body>
<input type="text" name="hola" onkeyup="resize(this)" size="2" value="ab" />
</body>
</html>