The game freezes whenever it attempts to download a player's skin for the purposes of a player head texture when in offline mode. This happens not only when generating a player head item, but also when loading a player head as a block or an item.
My guess is that the code is not programmed to recognize that the client is in offline mode when trying to download a player skin for the head. This doesn't happen when trying to download the player's skin, so player heads should also default to a Steve skin when in offline mode.
I was playing in offline mode yesterday because the Internet connection at the house I just moved into had not been set up yet. Forgetting that I was offline, I used /give to get a player head. The specific command I used:
/give BoxFigs minecraft:skull 1 3 {SkullOwner:Chica_Chicken}
As soon as I ran the command, the game froze. It said "Not Responding" on the top. I closed it and relaunched. When I tried to load the world again, it was stuck in attempting to load the player head in my inventory. I closed the game again and used NBTExplorer to delete the head item.
I checked my log file, and this is what appeared when the game froze the first time:
[21:49:23] [Texture Downloader #1/ERROR]: Couldn't download http texture
java.net.ConnectException: Connection timed out: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_31]
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:1.8.0_31]
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[?:1.8.0_31]
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_31]
at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_31]
at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_31]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_31]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_31]
at sun.net.NetworkClient.doConnect(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.http.HttpClient.<init>(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.http.HttpClient.New(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.http.HttpClient.New(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[?:1.8.0_31]
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) ~[?:1.8.0_31]
at bmb$1.run(SourceFile:106) [1.8.3.jar:?]
If it makes any difference, my laptop was wirelessly connected to the network, but the network wasn't connected to the Internet.
Linked issues
Comments

Marking as original, since the other report didn't provide needed info.
Duplicate of/related to MC-65587, but you can mark that one as a duplicate of this one since BoxFigs seems more interested in this bug.
@ @unknown:
This issue is about the game freezing in offline mode, so they're two separate bugs. I'd say mark it as related.
I think it's the same bug, the game freezes until it has the texture - the implications of this are different in online vs offline mode, but it's the same issue. Anyway, it's marked as a dupe now 🙂
@ @unknown:
Now that I've obtained the player heads I wanted to get the other day, I see what you mean. I seem to remember in previous versions that it temporarily showed a Steve skin until it grabbed the actual texture. It doesn't do that anymore.
Dupe of MC-68353