I've already made this in Python, but it seems that it could be shortened a lot:
txt = input("Type something.. ")
c = "#"
b = " "
print(c * (len(txt) + 4))
print(c, b * len(txt), c)
print(c, txt, c)
print(c, b * len(txt), c)
print(c * (len(txt) + 4))
So if the user types:
Hello World
The program prints:
###############
# #
# Hello World #
# #
###############
Fewest bytes wins—and of course, the answer can be written in any language.