**C# (94 characters)**

    string I(string i){int s=0,j=0;for(;j<12;)s+=(i[j]-48)*(j++%2<1?1:3);return i+((10-s%10)%10);}

With linebreaks/whitespace for readability:

    string I(string i) 
    { 
        int s = 0, j = 0;
        for (; j < 12; )
            s += (i[j] - 48) * (j++ % 2 < 1 ? 1 : 3); 
        return i + ((10 - s % 10) % 10); 
    }

Tested on several ISBNs from books on my shelf, so I know it's working!