Rolling you own ValidationMessage helper to render an image tag may be your best bet... The built-in helper will render a tag such as
<span class="field-validation-error">You must specify a username.</span>
so if you aren't going to change this you're left to CSS and/or jQuery tricks to do the dirty work.
I'm not aware of a pure use if CSS to do your job, but if you can handle having your error message span within a DIV tag, you could try something like:
.field-validation-error
{
background: url(x.gif) no-repeat;
padding-left:10px;
color: #ff0000;
}
<div style="width:10px; height:10px; overflow:hidden;">
<%= Html.ValidationMessage("username") %>
</div>
For a 10x10 gif, this will hide the text, but it will be within a block element and without your error message title/"tooltip." Not exactly the best solution. I would check the code for the ValidationMessage method in the MVC source and consider adapting your own to render it exactly as needed, or again, there's Javascript to do the trickery.
Edit: Just for fun I decided to test my own Validation Message helper, starting from the MVC source code. It's dirty (hard-coded path to image), but a working example. In this case it requires you to pass in the validation message - I've omitted some code where it optionally displays the default built-in message.
public static string MyValidationMessage(this HtmlHelper htmlHelper, string modelName, string validationMessage)
{
if (modelName == null)
throw new ArgumentNullException("modelName");
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName))
return null;
ModelState modelState = htmlHelper.ViewData.ModelState[modelName];
ModelErrorCollection modelErrors = (modelState == null) ? null : modelState.Errors;
ModelError modelError = ((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors[0];
if (modelError == null)
return null;
return "<img src=\"../../Content/x.gif\" alt=\"Error\" title=\"" + validationMessage + "\" />";
}