polyphase sample rate conversion with non-integer factor
Your approach seems conceptually sound.  I suspect that the problem is one of two things: 1) you have implemented it incorrectly, 2) Your filter bandwidth is too wide.

You are implementing the "smart" approach in that you are doing it the computationally efficient way.  I would try doing it the dumb way (insert I-1 zeroes between every sample, filtering with the entire filter, get rid of the extra samples) to verify your implementation and to see if the filter itself is the problem.  You can verify your implementation by comparing your resulting samples against the samples produced by the dumb approach.  After you have filtered the upsampled data one of the sample "phases" (there are "D" phases whose start samples are samples 0...D-1) should be the same as the smart approach's results.  If not, something is wrong in your implementation of either the smart or dumb approach.

If the results do match, then the problem is your filter.  You need to look closely at the bandwidth to make sure that it isn't too wide.  Since D > I the ideal filter bandwidth, assuming a perfect brick wall filter, is $\frac{I}{2D}$, where the factor of two comes from the Nyquist rate.