It depends somewhat on the platform you are developing for. For example, Windows applications have a standard "disabled" look for controls like text boxes. If your platform has a standard then you should follow it. Developing for the web gives you a little more freedom, but it is generally wise to leverage the user's existing knowledge of what a disabled field looks like rather than completely inventing your own.
It also depends on whether the field was ever an editable one, or how it relates to other editable data.
A greyed background / "disabled look" text box makes sense for text fields that:
- were editable at some point in the past.
- or have been auto-populated by the user selecting some particular option.
- or belong to a set of data where only some fields are editable.
A label / plain text makes more sense for scenarios where:
- the data will never ever change.
- or the data in the form containing the field has been submitted, and you are displaying a summary of the data to the user (something like the text summary of shipping details and price breakdown you get after you make an online purchase).