You can’t change the type attribute in Internet Explorer so the only way to do it is to swap the entire field (at least in IE). See http://javascript.about.com/library/blpass1.htm for code that will do the necessary field substitution in IE and which will just change the type in other browsers.
Surely it depends on how all the other fields in the form are being displayed. If all of them have their description as the default text so as to save space on a cluttered page then having a password field appear to do the same would be the most sensible alternative.
Which approach to take for all the fields should have been decided prior to starting on coding the HTML for the site. If that decision was to put the descriptions inside the fields (which isn’t necessarily a good decision to have made - but could have been a requirement specified by the client for whom the site is being created) then it isn’t appropriate to treat a password field any differently.
Also if you did use the paceholder attribute then you’d need to use JavaScript to emulate the functionality in ALL the browsers that don’t yet support it.
If the div puts the text exactly where it would need to be in order that it doesn’t look different then it would behave different because you couldn’t click on the field to enter the password because the div would be in the way. If the div is placed so as to not interfere with the password field then it would look different.
Trying to think creatively, what if the password field were on top, but with 0 opacity. That way when you click, it is the password field that you’re interacting with, and the fade effect can be applied to the password field itself.