I ran into this and took awhile to find the problem... thought I would write this while it was fresh.
USBFS_v2_60.pdf Page 57:
The discription for the "void USBUART_CDC_Init(void)" function gives an example using USBUART_GetConfiguration() to wait until the host has enumerated and configured the device.
The second line should have been "while(!USBUART_GetConfiguration()); ".. note the added "!" to invert the returned value from the get configuration function. The example above does not wait as indicated in the discription. The problem showed in my test software, where the Psoc could write to the PC but the PC could not write to the Psoc.