Code:
<script type="text/javascript">
var isie = (navigator.userAgent.indexOf("MSIE")!=-1) ? 1 : 0;
lineHeight="18px";
if (isie) { lineHeight="10px"; }
styl="<style type='text/css'>\n";
styl+=".mainfontnormal {\n";
styl+="line-height: "+lineHeight+";\n";
styl+="}\n";
styl+="</style>\n";
document.write(styl);
</script>
<div class="mainfontnormal">
1) Line 1 ________EEEEEEEEE<br />
2) Line 2 ________EEEEEEEEE<br />
3) Line 3 ________EEEEEEEEE<br />
4)
<script type="text/javascript">
document.write("line-height="+lineHeight+"<br />\n");
</script>
</div>
But I gotta say, with a properly-structured document, I didn't see any difference in the handling of the line-height CSS declaration. You might want to look at the CSS nesting. MSIE has several different interpretive quirks in the way it handles nested CSS instructions. Check out their own various bits of documentation for a good look at the confusion.
<edit>
PS: You can't have the SCRIPT stuff in between the lines of a normal STYLE container (or the other way 'round) because they use the same browser parsing engine. i.e.
Code:
<style type="text/css">
.mainfontnormal {
<script type="text/javascript">
document.write("line-height:"+lineHeight+";\n");
</script>
}
</style>
On a good note, this means that if the browser has its Javascript engine turned off, they won't be able to deal with the CSS, either!

</edit>