1: Start with a correctly configured monitor that uses an appropriate profile. If you're good at creating profiles manually, do so. Otherwise, invest in a colourimeter such as an Eye One or ColourMunki.
2: Set your image editor's profile input/output and working space correctly.
3: Use the correct ICC profile and settings for each paper type.
4: Use good quality inks, preferably originals. Ensure that the print head/s is/are working properly.
If, after all that, your results are still off, then you have either done something incorrectly or you have faulty hardware. And if your results are so bad that "white [is rendered as] black..." then you surely must have a faulty printer.