Yes, there is a way to emulate only with CSS and without javascript, which are requirements of the question, nth-child only with CSS. It gives a little more work, but it's workable.
former_element + target_element {style properties}
element: first-child {style properties}
Equivalent nth-child with fist-child and sibling
/* Primeiro filho */
li:nth-child(1) {}
li:first-child {}
/* Segundo filho */
li:nth-child(2) {}
li:first-child + li {}
/* Terceiro filho filho */
li:nth-child(3) {}
li:first-child + li + li {}
How to do nth-child (odd), nth-child (3n + 2) and others?
In this case, it is a bit more laborious. To work with IE8 and even IE7 you will need to manually place all comma-separated equivalents up to a limit where you find it interesting nth-child would calculate to infinity, however in your CSS would have to be by a number up to where appropriate
li:nth-child(2n) {}
/* Equivalente até o oitavo valor */
li:first-child + li,
li:first-child + li + li +li,
li:first-child + li + li + li + li + li,
li:first-child + li + li + li + li + li + li + li {
}
Alternatives
Other solutions will necessarily involve javascript code or additional markup in your HTML. Unless it's really needed and nothing simple to solve, it's not interesting to add even more javascript to your page, especially if it's complex.
IE8 and especially IE7 can take a lot, but much longer to process the page when using polyfills to a point where it is unacceptable.
A page that rendered in 200ms in Chrome, when using polyfills for nth-child it was quiet for 7 seconds. At the time I solved just adding more classes in HTML